QThread&QProcess |
Здравствуйте, гость ( Вход | Регистрация )
QThread&QProcess |
igor_bogomolov |
2.5.2010, 19:49
Сообщение
#11
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
по идее Qt сама выбирает тип соединения и указывать явно не нужно. Иногда нужно. MainWindow и ServerThread созданы с контексте одного потока поэтому м/у ниму тип соединения будет Qt::DirectConnectionМожно в принципе воспользоваться moveToThread, тогда тип соединения автоматически установится правильным |
|
|
Azazello |
2.5.2010, 20:16
Сообщение
#12
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 17.4.2010 Пользователь №: 1635 Спасибо сказали: 0 раз(а) Репутация: 0 |
igor_bogomolov, Litkevich Yuriy, большое спасибо за ответы.
Игорь, я попробовал сделать как Вы посоветовали, но, к сожалению, и это не помогло. Возможно, я просто что-то упустил, какую-нибудь мелоч. Выкладываю весь проект, может это внесет ясность, а то я уже и не знаю, что можно сделать. Перечитал уже сотню другую страниц форумов, ассистента и книжек, а результата никакого... |
|
|
igor_bogomolov |
2.5.2010, 20:31
Сообщение
#13
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Блин, слепой я. Ты же ServerThread на стеке создаёшь. После исполнения функции он у тебя удаляется.
Сделай так
|
|
|
Azazello |
2.5.2010, 21:06
Сообщение
#14
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 17.4.2010 Пользователь №: 1635 Спасибо сказали: 0 раз(а) Репутация: 0 |
Действительно, поставив создание потока на обработчик кнопки, я не учел то, что он не останется по выходу из функции. Теперь ясно, что означало "QThread: Destroyed while thread is still running".
Отладчиком стали видится данные вывода в QByteArray, но упорно продолжает вылетать с unexpectedly finished... И трассировать что-то нормально не выходит, не понятно ничего Я уже и, как советовали, выность ф-цию наружу пробовал,
объявляя класс в mainwindow.h и инициируя запуск в обработчике кнопки:
и все равно результат тот же |
|
|
igor_bogomolov |
2.5.2010, 21:27
Сообщение
#15
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Держи тестовый пример. Он правда для Windows, поэтому если ты делаешь для Linux строчки
могут быть лишними, просто закоментируй---Добавлено-------------- Кратко, проблема просто в невнимательности. Ты делаешь доступ к несуществующему объекту Объекта process у тебя не существует, т.к. ты его не создал. То что ты создаешь в run это совершенно другой объект доступа до которого ты не имеешь. P.S. Мой пример тоже не без недостатков, но для демонстрации сойдёт
Прикрепленные файлы
|
|
|
Azazello |
2.5.2010, 21:56
Сообщение
#16
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 17.4.2010 Пользователь №: 1635 Спасибо сказали: 0 раз(а) Репутация: 0 |
Кратко, проблема просто в невнимательности. И почему я так и думал Это всегда было моей основной проблемой. Игорь, спасибо тебе громадное. И не только за пример, но и за все ответы, которые мне очень помогли не просто тупо переписать, а именно понять свою ошибку. Мой самый искренний респект тебе! |
|
|
Текстовая версия | Сейчас: 24.11.2024, 10:28 |