生面的代码中,为什么不能将secWidget作为一个独立的窗口显示
时间: 2024-02-19 17:01:13 浏览: 19
在这段代码中,将secWidget设置为一个独立的窗口显示是没有问题的,但是由于主窗口w没有设置大小和位置,所以可能会被系统覆盖或隐藏,从而导致secWidget也无法正常显示。另外,如果secWidget作为一个独立的窗口显示,那么它的关闭时机就需要单独考虑,否则可能会出现不必要的问题,比如secWidget关闭后主窗口w无法正常显示等等。因此,建议将secWidget设置为主窗口w的子对象,这样可以避免出现这些问题。
相关问题
接着上面的提问,为什么使用了QGuiApplication::screens()函数,就不能同时显示两个独立的窗口
使用了QGuiApplication::screens()函数,是为了获取当前系统中所有的屏幕数量,然后根据屏幕数量来判断是否需要创建第二个窗口。在这段代码中,如果屏幕数量为1,则创建主窗口w并显示出来,同时创建第二个窗口secWidget并显示出来。由于secWidget没有设置为w的子对象,所以它是一个独立的窗口,与主窗口w互不影响,可以同时显示两个独立的窗口。但是需要注意,在这种情况下,secWidget关闭时机也需要单独考虑,否则可能会出现不必要的问题。
// main.cpp Widget w; w.show(); // widget.cpp Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); secWidget=new sec_Widget(this); secWidget->show(); } 为什么最终只有一个窗口显示
根据你提供的代码,我们可以看到在 `Widget` 类的构造函数中,除了调用 `ui->setupUi(this)` 初始化该窗口的 UI 外,还创建了一个 `secWidget` 对象,并且调用了 `secWidget->show()` 显示它。
但是,根据你的问题描述,最终只有一个窗口显示,这可能是因为 `secWidget` 对象被设置为了 `this` 的子窗口,即 `secWidget` 是 `Widget` 窗口的子窗口。这样,当 `Widget` 窗口显示时,它的子窗口 `secWidget` 也会被显示。
所以,只有一个窗口显示是正常的,因为 `secWidget` 窗口作为 `Widget` 窗口的子窗口被一同显示出来了。如果你想要同时显示两个独立的窗口,可以将 `secWidget` 对象设置为一个新的、独立的窗口,而不是 `Widget` 窗口的子窗口。