![]() |
|
|
![]()
|
|
| Faustle |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Всем добрый день.
Ситуация такая - есть GUI-приложение, в котором по нажатии на кнопку создается дочерний поток, в котором запускается процесс (например команда uname). Проблема заключается в том, как передать вывод консоли из дочернего потока в основной. Насколько я понял, это надо делать с помощью сингала-слота, но похоже что-то я делаю не так. сам проект Подскажите, что в нем не так. Предполагаю, что дело в ф-ции setOutput, но не уверен. Сам поток создается вроде нормально, единственно отладчик говорит:
Но подозреваю, что это из-за того, что процесс (команда uname) завершается, а поток корректно не завершается. Заранее спасибо. |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
У тебя экземпляр класса ServerThread создаётся на стеке в функции on_pushButton_clicked. Удаляется он при выходе из этой функции, при этом его никто не останавливает и не дожидается его завершения.
переделай примерно так: mainwindow.h:
mainwindow.cpp:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Faustle |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
borisbn, большое спасибо за ответ.
Действительно, поставив создание потока на обработчик кнопки, я не учел то, что он не останется по выходу из функции. Я попробовал воспользоваться Вашим советом, ошибки "QThread: Destroyed while thread is still running" исчезли, но программа продолжает вылетать. Радует только то, что поставив бряк на функцию вывода, я увидел, что данные в QByteArray все-таки появились, раньше их там не было. Саму же причину вылета пока понять не удалось. |
|||
|
||||
| Faustle |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Проблема решена, тема закрыта.
Я, дурак, обращался к несуществующему объекту process. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |