![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Kokos |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.6.2015 Пользователь №: 4409 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Кому не трудно подскажите пожалуйста.
Решил сделать интерфейс для консольной программки на bash, в с++ не разбираюсь, но с помощью Qt Creator сделал форму, пару кнопок. Есть скрипт который долго работает, хотел вывести статус его выполнения через QProgressBar, но не соображу как это сделать. Пока код такой:
|
|
|
wiz29 |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Через QProcess никак,
если только выполнение вашего скрипта не возвращает в аутпут процесса значение прогресса выполнения. если же там простой скрипт состоящий построчно из команд, без циклов и тп фишек. то этот файл можно выполнить последовательно, построчно. Тогда все выглядит довольно просто: 1. Читается файл скрипта построчно, заполняется массив со строками 2. Потом последовательно выполняется через QtConcurrent::mappedReduced например 3. Используется QFutureWatcher для мониторинга процесса исполнения, который подключается к полосе прогресса. Сообщение отредактировал wiz29 - 19.6.2015, 14:22 |
|
|
Kokos |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.6.2015 Пользователь №: 4409 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Если я проставлю в скрипте метки типа echo "progress=1" echo "progress=3"... как их читать и заставить progressBar сопоставлять их со своей шкалой?
Вчера весь день изучал документацию, но без наглядных примеров правильно сделать не получается, да и неправильно тоже. |
|
|
wiz29 |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Все просто: процесс - это QIODevice.
Вкратце можно запустить его в отдельном потоке и через прокси объект нотифицировать о ходе прогресса или об ошибка, читая из него данные.
Сообщение отредактировал wiz29 - 25.6.2015, 11:27 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.4.2025, 15:00 |