接着上面的提问,为什么使用了QGuiApplication::screens()函数,就不能同时显示两个独立的窗口
时间: 2024-02-19 17:01:05 浏览: 46
使用了QGuiApplication::screens()函数,是为了获取当前系统中所有的屏幕数量,然后根据屏幕数量来判断是否需要创建第二个窗口。在这段代码中,如果屏幕数量为1,则创建主窗口w并显示出来,同时创建第二个窗口secWidget并显示出来。由于secWidget没有设置为w的子对象,所以它是一个独立的窗口,与主窗口w互不影响,可以同时显示两个独立的窗口。但是需要注意,在这种情况下,secWidget关闭时机也需要单独考虑,否则可能会出现不必要的问题。
相关问题
```cpp 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(); } ``` 这段代码中为什么两个窗口同时一闪而过
这段代码中两个窗口同时一闪而过是因为在主函数中分别创建了两个窗口对象 `Widget w` 和 `SecWidget secWidget`,并且两个窗口对象的 `show()` 函数都被调用了,所以在 `a.exec()` 开始执行之前,两个窗口都被显示出来了,并且由于没有设置窗口的位置和大小,它们可能会重叠在一起,导致同时一闪而过的现象。如果想要解决这个问题,可以在创建第二个窗口的时候,调用 `move()` 函数设置第二个窗口的位置,或者在构造函数中设置窗口的默认位置和大小。
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); secWidget=new SecWiget(); secWidget->show(); } int main(int argc, char *argv[]) { QApplication a(argc, argv); QList<QScreen*> screens=QGuiApplication::screens(); if (screens.size()==1) { Widget w; w.show(); } return a.exec(); } 这段代码中,在Widget类的构造函数中创建了一个新的QWidget对象secWidget并显示,但是最终的结果主窗口w一闪而过,则把main函数替换成下面的代码,则主窗口w和第二个窗口secWidget都会独立显示出来,这是为什么 int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
将main函数替换成int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }之后,主窗口w被创建并显示出来,因为没有使用QGuiApplication::screens()函数限制屏幕数量,所以无论有多少个屏幕,主窗口w都会显示在默认的屏幕上,并且由于我们没有将secWidget设置为w的子对象,所以它会作为一个独立的窗口显示。因此,主窗口w和secWidget都会独立显示出来。但是需要注意,在这种情况下,secWidget关闭时机也需要单独考虑,否则可能会出现不必要的问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)