[英]Calling QApplication::exec() after QDialog::exec()
在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,argv);
QDialog dialog;
dialog.exec();
return app.exec();
}
當我點擊對話框右上角的關閉按鈕時,對話框窗口消失,但程序仍在運行
dialog.exec()和app.exec()之間有什么區別? 我可以簡單地使用dialog.exec()然后返回0或它會導致什么問題?
QDialog,QMenu,QCoreApplication的exec
方法運行事件循環。 事件循環是無限的。
因此,QApplication事件循環應該是第一個要啟動的循環。 在大多數情況下,您應該使用QDialog :: show()或QDialog :: open()而不是QDialog :: exec()。
換句話說,您有以下代碼:
while (1) // QDialog::exec
{
// Close event
}
while (1) // QApplication::exec
{
// There are no events
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.