是否可以在子线程中创建界面组件?
class TestThread : public QThread
{
Q_OBJECT
protected:
void run()
{
QWidget w;
w.show();
exec();
}
}
子线程如何对界面组件进行更新?
解决发哪敢-信号与槽
-在子线程类中定义界面组件的更新信号(updateUI)
-在主窗口类中定义更新界面组件的槽函数(setInfo)
-使用异步方式连接更新信号到槽函数(updateUI -》setInfo)
·子线程通过发射信号的方式更新界面组件
·所有的界面组件对象只能依附于主线程
ps:子线程不能直接操作界面组件,但是可以通过信号与槽的机制间接操作界面插件
总结:
-现代GUI平台值许在主线程中直接操作界面组件
-Qt总可以借助信号与槽的机制在子线程中操作界面组件
-进行信号与槽的连接时必须采用异步连接的方式
-界面组件对象必须依附于主线程