我尝试显示错误消息框,但发生了错误。任何人都可以帮助检查我的编码吗?
void smtp_listener::pop3Stat(QString reply)
{
print_D(FUNC);
if(reply.contains("+OK"))
{
*t << "stat" <<"\r\n";
t->flush();
setState(POP3_Read);
}
else
{
print_E("ERROR :"+reply,FUNC,__LINE__);
QMessageBox msgBox;
msgBox.setWindowTitle("Error");
msgBox.setText("Please check it.");
msgBox.exec();
quitConn();
setState(POP3_Quit);
}
}
错误如下:
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1118
最佳答案
问题似乎是您的 smtp_listener
正在另一个线程中执行。一个相当简单的 Qt 解决方案是不尝试显示来自 smtp_listener
的错误。而是给您的 smtp_listener
一个错误信号。将此信号连接到表单中负责显示错误的插槽。 Qt 的信号系统会将信号排队等待在 gui 线程中执行。
关于c++ - 错误时显示错误消息框。我怎样才能显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944147/