Если вы посмотрите на эту ссылку , вы увидите, что можно запустить метод в отдельном потоке без создания подкласса QThread.
Однако вы просите запустить цикл обработки сообщений forever .
Если вы следуете приведенному примеру, вы можете запустить свой цикл без подклассов, но объект QThread никогда не войдет в свою собственную петлю сообщений , потому что он никогда не вернется из вашего слота.Итак, вот пример, но я думаю, что это будет плохой дизайн
class Device : public QObject
{
Q_OBJECT
public:
Device(QObject* parent = 0);
~Device();
public Q_SLOTS:
void MsgLoop();
};
QThread* thread = new QThread;
Device* device = new Device;
void Widget::onBtnStartClicked()
{
device->moveToThread(thread);
//This will call start method of Device
connect(thread, SIGNAL(started()), device, SLOT(MsgLoop()));
//This will start the event loop of thread
thread->start();
}
void Widget::onBtnStopClicked()
{
//Tells the thread to exit
thread->exit(0);
}
Я боюсь, что вам нужно создать подкласс QThread, если вы хотите запустить forever петля.