在Qt的官方文檔,大家知道有兩種方式使用?QThread。
- You can use worker objects by moving them to the thread using QObject::moveToThread().
- Another way to make code run in a separate thread, is to subclass QThread and reimplement run().
在使用MoveToThread這種方式時,經(jīng)常會遇到下面類似的問題:
- QObject: Cannot create children for a parent that is in a different thread.
出現(xiàn)這樣的問題根本原因就是,調(diào)用MoveToThread 之后,在 Worker的槽函數(shù)中Worker的私有成員中又進行了new操作,并且將this指針傳給了構(gòu)造函數(shù)。看下實例:文章來源:http://www.zghlxwxcb.cn/news/detail-455857.html
mainwindow.h文章來源地址http://www.zghlxwxcb.cn/news/detail-455857.html
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QThread>
#include <QMainWindow>
#include "worker.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void doWorkSignal();
private:
Ui::MainW
到了這里,關(guān)于QObject: Cannot create children for a parent that is in a different thread的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!