C++ 在QDialog::exec()之后调用QApplication::exec()
在Qt手册中,有这样一个示例:C++ 在QDialog::exec()之后调用QApplication::exec(),c++,qt,user-interface,C++,Qt,User Interface,在Qt手册中,有这样一个示例: int main(int argc, char *argv[]) { QApplication app(argc,argv); QDialog dialog; dialog.show(); return app.exec(); } 它的功能很好,但在下面稍作改动后: int main(int argc, char *argv[]) { QApplication app(argc,
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QDialog dialog;
dialog.show();
return app.exec();
}
它的功能很好,但在下面稍作改动后:
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QDialog dialog;
dialog.exec();
return app.exec();
}
当我点击对话框右上角的关闭按钮时,对话框窗口消失了,但程序仍在运行
dialog.exec()和app.exec()之间有什么区别?
我可以简单地使用dialog.exec()然后返回0吗?或者它会导致什么问题?QDialog、QMenu、qcore应用程序的
exec
方法运行一个事件循环。事件循环是无限的
因此,QApplication事件循环应该是第一个启动的循环。在大多数情况下,应该使用QDialog::show()或QDialog::open()而不是QDialog::exec()
换句话说,您有以下代码:
while (1) // QDialog::exec
{
// Close event
}
while (1) // QApplication::exec
{
// There are no events
}
QDialog、QMenu、qcore应用程序的
exec
方法运行事件循环。事件循环是无限的
因此,QApplication事件循环应该是第一个启动的循环。在大多数情况下,应该使用QDialog::show()或QDialog::open()而不是QDialog::exec()
换句话说,您有以下代码:
while (1) // QDialog::exec
{
// Close event
}
while (1) // QApplication::exec
{
// There are no events
}