Qt - 对主要的 QDialog 选择感到困惑

Posted

技术标签:

【中文标题】Qt - 对主要的 QDialog 选择感到困惑【英文标题】:Qt - confused on QDialog choice on main 【发布时间】:2012-07-31 11:38:33 【问题描述】:

我有以下 Qt 代码:

int main(int argc, char *argv[])

    QApplication app(argc, argv);

    ChoosingDialog cdlg;

    if(!startWin.exec())
    
        // nothing chosen
        return 0;
    

    if(cdlg.firstWindowSelected)
    
        CFirstWindow win;
        win.show();

        return app.exec();
    
    else
    
        CSecondWindow win;
        win.show();

        return app.exec();
    


这似乎可行,但它在某些 asm 行中的“事件调度程序清理”上给了我一个错误。我尝试了一下,发现问题与 app.exec() 调用有关。

更新: 如果我将这些行添加到选择对话框(这是一个由 Qt Creator 自动生成的简单空白类)

void ChoosingDialog ::closeEvent(QCloseEvent *)

    exit(1);

我没有收到任何错误

【问题讨论】:

我尝试了您的代码(使用假的 ChooseDialog、CFistWindow 和 CSecondWindow),除了 startWin 应该是 cdlg 我没有遇到任何错误。你能提供你的小部件的实现吗? 我没有小部件,我有一个没有任何内容的 QDialog 类(默认由 Qt Creator 生成)和两个 QMainWindows(但如果我不构建它们的对象也会发生错误)跨度> 是的,startWin 应该是 cdlg。代码看起来不错。 @Johnny:你能发布确切的错误吗? 调用exit() 听起来不是一个合适的解决方案。这里正在发生其他事情。我建议追踪错误(尤其是因为它只是一小段代码)而不是编写“解决方法”。 【参考方案1】:

原来我在 QApplication 之前使用了“singleapplication”类。共享内存锁出了点问题。

我一重新启动系统,异常就消失了……bof..你相信魔法吗?

【讨论】:

以上是关于Qt - 对主要的 QDialog 选择感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

将结构传递给Qt中的信号

QT编程的QDialog对话框右上角的问号按钮如何取消呢

对 C++ 迭代器感到困惑

对android运行时权限感到困惑

对启动模式感到困惑

对 fetchResultController 如何与 MagicalRecord 一起工作感到困惑