C++ Qt-主屏幕上的QDialog选择混淆
我有以下Qt代码:C++ Qt-主屏幕上的QDialog选择混淆,c++,qt,qt4,qdialog,qtgui,C++,Qt,Qt4,Qdialog,Qtgui,我有以下Qt代码: int main(int argc, char *argv[]) { QApplication app(argc, argv); ChoosingDialog cdlg; if(!startWin.exec()) { // nothing chosen return 0; } if(cdlg.firstWindowSelected) { CFirstWindow wi
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()调用有关
更新:
如果我将这些行添加到ChoosingDialog(这是一个由Qt Creator自动生成的简单空白类)
我没有收到任何错误原来我在QApplication之前使用的是“singleapplication”类。。共享内存锁出了问题
我一重新启动系统,异常就消失了。。。转炉。。你相信魔法吗?我试过你的代码(用一个假选择对话框、CFistWindow和CSecondWindow),除了
startWin
应该是cdlg
之外,我没有遇到任何错误。你能提供你的小部件的实现吗?我没有小部件,我有一个没有任何内容的QDialog类(默认由Qt Creator生成)和两个QMainWindows(但如果我没有构建它们的对象,也会发生错误)是的,startWin应该是cdlg。代码似乎很好。@Johnny:你能说出确切的错误吗?调用exit()
听起来不是一个合适的解决方案。这里还有别的事情。我建议跟踪错误(特别是因为它只是一小段代码),而不是编写“变通方法”。
void ChoosingDialog ::closeEvent(QCloseEvent *)
{
exit(1);
}