【发布时间】: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()听起来不是一个合适的解决方案。这里正在发生其他事情。我建议追踪错误(尤其是因为它只是一小段代码)而不是编写“解决方法”。