【发布时间】:2014-01-07 10:32:44
【问题描述】:
在官方 Qt 文档中:
如前所述,每个程序在启动时都有一个线程。该线程称为“主线程”(在 Qt 应用程序中也称为“GUI 线程”)。 Qt GUI 必须在这个线程中运行。所有小部件和几个相关的类,例如 QPixmap,都不能在辅助线程中工作
现在,在一个 qt 项目中,我尝试了以下代码:
QThread* thread = new QThread;
DetectList *list = new DetectList;
list->moveToThread(thread);
connect(thread, SIGNAL(started()), list, SLOT(process()));
thread->start();
其中 DetectList 是 QWidget 派生的一个类。为什么代码编译和运行? DetectList不是只能在主线程中运行吗?
【问题讨论】:
-
DetectList 是否显示任何 GUI 元素,或者您只是在调用进程?
-
"为什么要编译运行代码?" -> 你的意思是你连运行时警告都没有?你能把这段代码给我们看吗?