您当前的位置: 首页 >  ui

龚建波

暂无认证

  • 4浏览

    0关注

    313博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt中UI线程与子线程的交互

龚建波 发布时间:2020-03-29 00:27:48 ,浏览量:4

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()            
关注
打赏
1655829268
查看更多评论
0.0357s