qt从普通线程发信号到UI线程

原创
2019/07/18 20:18
阅读数 6.2K

加入从当前一个普通线程发送信号到ui,更新Ui只能使用Qt::BlockingQueuedConnection,用Qt::QueuedConnection会一会有用一会没用,并且会导致崩溃。

 

connect(this, &Task::startTask, this, _startFuncion, Qt::BlockingQueuedConnection);

比如当前是一个普通线程,那么_startFuncion的代码就会在UI线程上执行,这样外部可以直接设置回调函数直接刷新ui

 

QT的信号槽机制本质上就是一个消息队列,除了Qt::DirectConnection模式是直接调用槽函数,Qt::QueuedConnection,Qt::BlockingQueuedConnection  都是通过信号槽来实现信号传递机制,并堵塞信号直至槽函数执行完毕,区别只是Qt::BlockingQueuedConnection可以用于普通线程.

 

 

QMetaObject::invokeMethod(this, "update", Qt::QueuedConnection);
展开阅读全文
Qt
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部