Мне нужно реализовать форму с помощью кнопок и виджета журнала, а при нажатии кнопки некоторое другое задание должно начинаться в другом потоке.Qt: нормально делать длинную работу в цикле событий другого потока
Информация о процессе должна быть отражена в журнале.
Нельзя запускать две работы одновременно.
Так я думаю о: создать подкласс QThread
со своим собственным циклом обработки событий (конечно вызовом moveToThread(this)
в конструкторе QThread
«s), и подключить сигнал QButton
к слоту doLongJob()
этой нити.
Звучит неплохо или вообще не так? Другой способ: скажем, создавать новый поток каждый раз, когда пользователь нажимает кнопку. Кажется, хуже.
Есть ли некоторые рекомендации, чтобы сделать это довольно обычное дело? Пожалуйста, дайте мне предложение.
Вы вообще [не хотите подкласса QThread] (http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/) , но кроме этого, подключение вещей с помощью сигналов и слотов просто отлично. – Bart
@Bart, большое спасибо, открыв глаза на то, как правильно использовать QThread. Я довольно удивлен, как хорошо сформированная структура, так как Qt может иметь такие вводящие в заблуждение документы. И, действительно, я видел много примеров с подклассами QThread .. –
Подклассификация 'QThread' - это не конец света, но управление памятью сложнее, и есть много ошибок, смешанных в том, что вы должны быть осознавая. – phyatt