2013-05-17 2 views
0

Мне нужно реализовать форму с помощью кнопок и виджета журнала, а при нажатии кнопки некоторое другое задание должно начинаться в другом потоке.Qt: нормально делать длинную работу в цикле событий другого потока

Информация о процессе должна быть отражена в журнале.

Нельзя запускать две работы одновременно.

Так я думаю о: создать подкласс QThread со своим собственным циклом обработки событий (конечно вызовом moveToThread(this) в конструкторе QThread «s), и подключить сигнал QButton к слоту doLongJob() этой нити.

Звучит неплохо или вообще не так? Другой способ: скажем, создавать новый поток каждый раз, когда пользователь нажимает кнопку. Кажется, хуже.

Есть ли некоторые рекомендации, чтобы сделать это довольно обычное дело? Пожалуйста, дайте мне предложение.

+2

Вы вообще [не хотите подкласса QThread] (http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/) , но кроме этого, подключение вещей с помощью сигналов и слотов просто отлично. – Bart

+0

@Bart, большое спасибо, открыв глаза на то, как правильно использовать QThread. Я довольно удивлен, как хорошо сформированная структура, так как Qt может иметь такие вводящие в заблуждение документы. И, действительно, я видел много примеров с подклассами QThread .. –

+0

Подклассификация 'QThread' - это не конец света, но управление памятью сложнее, и есть много ошибок, смешанных в том, что вы должны быть осознавая. – phyatt

ответ

0

Бард уже ответил в комментарии, я попросил его дважды написать то же самое, что и ответ, но, похоже, он действительно этого не хочет.

Итак, я устал ждать более 7 месяцев и поэтому должен сам это сделать, чтобы избавиться от этого оставшегося без ответа вопроса.

Ответ:

Вы обычно do not want to subclass QThread, но кроме этого, подключение вещи с сигналами и слотами просто отлично.

Смежные вопросы