gpt4 book ai didi

c++ - QMainWindow 没有 .show() 但 .showFullScreen() 有效

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:05 25 4
gpt4 key购买 nike

我有一个正在构建的桌面应用程序,它检查 QSetting 值,如果未设置,则显示一个 QMainWindow 类,但如果已设置,则显示一个不同的 QMainWindow 类。这两个类在这一点上实际上是相同的,因为它还处于早期阶段并且实际上不包含任何内容。

在我的 main 函数中,这是我得到的:

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

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

return a.exec();
}

与我创建项目时设置的默认项目之间的唯一区别是添加了条件窗口加载。 MainWindowLoginWindow 除了与其关联的 ui 文件外没有任何加载,它们在功能上是相同的。

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

如果我删除条件语句和 LoginWindow 引用,MainWindow 会正常显示。

知道为什么在同一类上调用 .showFullScreen() 会起作用,但调用 .show() 却不行吗?

最佳答案

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

请试试这个:

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();
}


}

关于c++ - QMainWindow 没有 .show() 但 .showFullScreen() 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com