QMainWindow不是.show(),但.showFullScreen()有效

时间:2017-03-29 14:52:05

标签: c++ qt5

我有一个桌面应用程序,我正在建立一个检查QSetting值的桌面应用程序,如果它没有设置显示一个QMainWindow类,但如果是,则显示不同的{ {1}}课程。这两个类在这一点上完全相同,因为它早期并没有真正包含任何东西。

在我的QMainWindow函数中,这就是我所拥有的:

main

在我创建项目时设置的默认项目之间的唯一区别是添加了条件窗口加载。 int main (int argc, char *argv[]) { ... if (userToken == "NO_USER") { LoginWindow w; w.show(); } else { MainWindow w; w.show(); } return a.exec(); } MainWindow除了与其关联的ui文件之外没有其他任何加载,它们在功能上相同。

奇怪的是,如果我LoginWindow w.showFullScreen()它会出现并占据整个屏幕,如果我LoginWindow什么也没发生,没有编译器警告错误,应用程序运行正常,只是没有窗口显示。

如果删除条件语句和w.show()引用,则MainWindow显示正常。

任何想法为什么拨打LoginWindow会有效但在同一个班级拨打.showFullScreen()不会?

1 个答案:

答案 0 :(得分:0)

我不确定这是否能解决您的问题,但您的代码肯定存在错误。您正在紧密范围内实现堆栈上的窗口对象,并且如您所知,这些对象一旦离开该范围就会被破坏。你正在做的是让它们在应用程序启动之前超出范围。

请改为尝试:

int main (int argc, char *argv[]) {
    ...


    if (userToken == "NO_USER") {
       LoginWindow w;
       w.show();
      return a.exec();
    } else {
       MainWindow w;
       w.show();
      return a.exec();
    }


}