Qt多线程[QMessageBox]Cannot set parent, new parent is in a different thread以及connect注意事项

多线程不允许操作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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值