Название: вопрос о QTextBrowser Отправлено: inforse от Октябрь 11, 2012, 19:17 Подскажите пожалуйста, вот такая ситуация.
В приложении выполняю команду стандартным оператором system(). В Creatore в окне Вывод приложения выводятся все сообщения выполняющиеся этой командой. Можно ли их перехватить и выводить в реальном времени в TextBrowser? Там насколько я понял разность типов идет, в Приложении выводится QByteArray, он не совместим с TextBrowser. Есть какие нибудь стандартные варианты Qt что бы перехватить вывод приложения и вывести его пользователю? Название: Re: вопрос о QTextBrowser Отправлено: mutineer от Октябрь 11, 2012, 20:04 Да, используй QProcess для запуска
Название: Re: вопрос о QTextBrowser Отправлено: inforse от Октябрь 11, 2012, 20:27 А можно по подробнее, пожалуйста.
Qprocess можно вывести в текстБраузер? Название: Re: вопрос о QTextBrowser Отправлено: mutineer от Октябрь 11, 2012, 20:33 Почитай документацию. Если запускаешь процесс через QProcess, то можно читать его вывод и делать с этим выводом что хочешь
Название: Re: вопрос о QTextBrowser Отправлено: andrew.k от Октябрь 11, 2012, 20:33 А можно по подробнее, пожалуйста. Подробнее можно - подробнее написано в ассистенте ;)Название: Re: вопрос о QTextBrowser Отправлено: inforse от Октябрь 16, 2012, 09:12 Так спасибо за наводку, Qprocess почитал, перевел на него системную команду, он её выполняет. Только теперь тишина на выходе.. Тоесть работу он делает но никаких сообщений не выводит.
Подскажите пожалуйста, очень надо что делать. Брал примеры из книжек, ни фига не получается. Вот несколько вариантов которые я пробовал. Код: QProcess m_process; Код: QByteArray d2; Help!) Название: Re: вопрос о QTextBrowser Отправлено: andrew.k от Октябрь 16, 2012, 09:45 Так спасибо за наводку, Qprocess почитал, перевел на него системную команду, он её выполняет. Только теперь тишина на Ну как же ты почитал (http://doc.qt.digia.com/qt/qprocess.html#readAllStandardOutput)?Это самые последние, пытался конект сделать с ReadyreadStandardOutput (connect( process, SIGNAL(readyReadStandardOutput()), SLOT(slotDataOnStdout()));) Но при компиляции он ему не нравится, и я не знаю почему. Примеры в книгах не адаптируются(( С коннектом сигналов, будь другом, разберись сам. Поверь, они коннектятся.Help!) Название: Re: вопрос о QTextBrowser Отправлено: mutineer от Октябрь 16, 2012, 10:12 Это самые последние, пытался конект сделать с ReadyreadStandardOutput (connect( process, SIGNAL(readyReadStandardOutput()), SLOT(slotDataOnStdout()));) Но при компиляции он ему не нравится, и я не знаю почему. Примеры в книгах не адаптируются(( Help!) Если почитать внимательно сообщение об ошибке, то можно заметить, что process не указатель d2 = process.readAll().data(); textBrowser->insertPlainText(process.readAll().data()); ты в первой строке уже все прочитал, во второй читать уже нечего Название: Re: вопрос о QTextBrowser Отправлено: inforse от Октябрь 16, 2012, 11:51 Код: ui->setupUi(this); Код: void process::ss() Код: void process::updateOutputTextEdit() Хорошо, тогда вопрос по существу. Вот этот код полность рабочий, и ошибки считывает, и результат завершения процесса выводит замечательно. Почему он даже не заходит в слот updateOutputTextEdit? Что я не так делаю? Он запускает процесс, но сообщения которые он выводит, он не видит. Если запустить тот же процесс через system, то все сообщения видны. Только не ругайтесь если достал уже) Пожалуйста) Название: Re: вопрос о QTextBrowser Отправлено: mutineer от Октябрь 16, 2012, 12:29 процесс пишет свои сообщения в standartOutput или в standartError?
Название: Re: вопрос о QTextBrowser Отправлено: inforse от Октябрь 16, 2012, 13:45 Если процесс запустить не удается, он пишет в Error, после выполнения выводит результат через Finished.
Пробовал этот код: Код: QByteArray newData = mprocess.readAllStandardOutput(); На деле реакция на ошибки, и отсутствия файлов она обрабатывает, но сообщения у меня не получается отловить. Название: Re: вопрос о QTextBrowser Отправлено: inforse от Октябрь 16, 2012, 13:46 сам процесс в standart должен писать.
|