我有一個Qt多線程的問題。我有希望作爲線程Qt多線程啓動線程錯誤
//protdata.cpp
class ProtData : public QObject
{
Q_OBJECT
private:
QList<ProtDataInputHandler *> _inputs;
public:
ProtData();
void addInput();
....
};
void ProtData::addInput(QIODevice *input, bool network_order)
{
_inputs.append(new ProtDataInputHandler());
}
我有另一類display.cpp其中i實例使用moveToThread()的protdata對象作爲線程的類;
//display.cpp
...
QThread* newThread = new QThread();
_protdata->moveToThread(newThread);
newThread->start();
...
在某些時候,在display.cpp:
//display.cpp
....
_protdata->addInput();
當我執行addInput方法,我得到以下錯誤:
QObject: Cannot create children for a parent that is in a different thread. (Parent is ProtData(0x19bba50), parent's thread is QThread(0x19b3c18), current thread is QThread(0x1f08930)
得到什麼錯?我還必須將ProtDataInputHandler類移入newThread?怎麼樣?
謝謝