多线程不允许操作UI!!!
场景:
在子线程的工作函数中,我想将错误以弹窗的形式显示出来,并qDebug一起打印出来,于是封装了一个Tools类,信号从Tools::msg( )中发出来,由Mainwindow接收,msg( )在子线程中调用。
问题:
1. 关于在多线程中调用QMessageBox弹窗的问题
2. 涉及多线程的connect对象问题
3. 涉及多线程的connect lamda表达式的注意事项
伪代码及分析:
//Tools类
class Tools
{
/**省略多余部分**/
public msg(const QString &str){
emit sigShowMsg(str);
qDebug(str);
}
}
//在Mainwindow中连接信号与槽函数
Tools tool;
connect(&tool, &Tools::sigShowMsg, [=](const QString &str){
QMessageBox::critical