int main(int argc, char *argv[]) { QApplication a(argc, argv); QList<QScreen*> screens=QGuiApplication::screens(); if (screens.size()==1) { Widget w; w.show(); SecWiget secWidget;; secWidget.show(); return a.exec(); } } 这段代码,将return a.exec放在if语句块内,两个界面能够正常的独立显示,如果将return a.exec放在if语句块外,两个界面都会一闪而过,这是为什么
时间: 2024-01-19 08:03:02 浏览: 75
C语言中 int main(int argc,char *argv[])的两个参数详解
将 `return a.exec()` 放在 if 语句块内时,两个界面能够正常独立显示,是因为在 if 语句块内只有满足条件时才会创建并显示两个窗口,然后程序进入消息循环,等待用户交互。当用户关闭其中一个窗口时,消息循环继续,直到所有窗口都关闭,然后程序执行 `return a.exec()`,退出消息循环,结束程序的运行。
而当将 `return a.exec()` 放在 if 语句块外时,无论是否满足条件,都会创建并显示两个窗口,然后程序立即进入消息循环,等待用户交互。但是,由于两个窗口都没有设置位置和大小,它们可能会重叠在一起,导致同时一闪而过的现象。当用户关闭其中一个窗口时,消息循环继续,直到所有窗口都关闭,然后程序执行 `return a.exec()`,退出消息循环,结束程序的运行。
阅读全文