多线程调用时在子线程里使用QMessageBox会出现此问题,用发送信号的方式解决这个问题。我这里只用了information类型,可以再加一个枚举类型参数区分提示框的类型。
// 头文件定义
// 信号
signals:
void emitQMessageBox(QString _title,QString _text);
// 槽函数
void SlotQMessageBox(QString _title, QString _text);
// 源文件实现
// 初始化连接信号槽
connect(this, &类名::emitQMessageBox, this, &类名::SlotQMessageBox);
// 需要用到的地方(另一个线程里)
emitQMessageBox("错误", "打开失败! ");
// 槽函数实现
void 类名::SlotQMessageBox(QString _title, QString _text)
{
QMessageBox::information(this, _title, _text);
}