c++ - 错误时显示错误消息框。我怎样才能显示它?

标签 c++ qt

我尝试显示错误消息框,但发生了错误。任何人都可以帮助检查我的编码吗?

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/

相关文章:

c++ - 宏与模板结合生成Object

java - 考虑从 Java 迁移的基本 C++ 方面

c++ - 如何比较两个已解析的文件并将差异附加到第一个?

c++ - 通过 QTreeView 中的 QAbstractItemModel 实现用户可编辑复选框的自定义

c++ - Sublime Text 2 构建系统(从输入文件获取输入)

c++ - Qt:父子关系如何影响子部件的布局?

c++ - 如何在 QComboBox 中显示与列表文本不同的选定文本?

c++ - 模板元编程 NamedPipe 客户端服务器

c++ - 在 C++ 中按行打乱二维数组

c++ - 如何配置 VS Code 使其在程序运行后不会关闭控制台