Russian Qt Forum
Ноябрь 23, 2024, 06:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qprocess+форматирование  (Прочитано 3106 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Ноябрь 25, 2017, 12:40 »

Здравствуйте пишу простенькую программку форматирования дисков
Вся проблема заключается в том что не идет сигнал readyreadstandartoutput
По нажатию на pushbutton должно начать форматирование
Код
C++ (Qt)
void MainWindow::knopkaClicked()
{
    connect(&pr,SIGNAL(readyReadStandartOutput()),this,SLOT(getoutput()));
   pr.start("/usr/bin/dvd+rw-format",QStringList()<<"-fast"<<"/dev/sr0:;
}


//Здесь по идее просто обработка событий из очереди и вывод в textedit
Код
C++ (Qt)
void MainWindow::getoutput()
{
   QApplication::processEvents();
   QString rex=pr.readAllStandartOutput()
   ui->textedit->setText(rez)
}
pr- объект класса QProcess объявленный в секции Public (QProcess pr)

Вообщем когда начинается форматирование диска и когда оно заканчивается pr испускает сигнал и started и finished (я проверял)
Но проблема в том что сигнал readyReadStandartOutput() не испускается вообще (на протяжении всего процесса форматирования). По моей задумке во время стирания диска должен вертеться прогресс бар туда-сюда, но этого не происходит по причине что не испускается readyReadStandartOutput()
Так вот в чем может быть проблема?

Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #1 : Ноябрь 27, 2017, 08:25 »

может он в stderr пишет ?
QApplication::processEvents(); - это зачем ?
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Ноябрь 27, 2017, 20:31 »

чтобы прогресс бар туда сюда бегал
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #3 : Ноябрь 27, 2017, 20:55 »

может он в stderr пишет ?
QApplication::processEvents(); - это зачем ?

Да действительно он пишет в stderr и испускает сигнал readyreadstandarterror()
правда это странно форматирование завершается успешно по сигналу finished код возврата ноль и QProcess:NormalExit
readyreadstandartoutput--вообще не испускается ни разу

хм...... может быть особенность данной программы
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #4 : Ноябрь 28, 2017, 09:52 »

чтобы прогресс бар туда сюда бегал

лучше сделать событие Qt::QueuedConnection

а пишет он в stderr наверно потому, что stdout использует для pipe
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 23.