0.前言
GUI框架一般只允许UI线程操作界面组件,Qt也是如此。但我们的应用程序一般是多线程的,势必就涉及到UI线程与子线程的交互。
下面介绍常用的UI线程与子线程交互方式,并附上自己的Demo。
1.Qt中几种常见的多线程交互的操作Qt中提供了一些线程安全的方法来让我们使用:
A.使用信号槽
Qt的信号槽是线程安全的。connect函数的第五个参数ConnectionType默认为Qt::AutoConnection,如果接收者和发送者不在一个线程,则相当于自动使用Qt::QueuedConnection类型,槽函数会在接收者线程执行。
connect(this,&MainWindow::signalDoing,worker,&MyWorker::slotDoing);
B.使用 QMetaObject::invokeMethod
invokeMethod可以线程安全的对目标对象进行操作,如调用目标对象的成员函数等。它也具有一个ConnectionType参数,参照connect。
qDebug()
关注
打赏