我的 Qt 应用程序有问题。我可以毫无问题地保存和恢复我的应用程序的 qeometry。问题是当我尝试在关闭事件中保存最大化应用程序的几何图形时,然后我尝试启动一些最小化的应用程序(类似于“启动时运行最小化”)。当我这样做并单击任务栏上的图标时,窗口将作为普通窗口打开(未最大化)。
我可以想象(并编写)一些解决方法,但是使用所有 Gui 逻辑很容易犯一些错误,我更喜欢一些本机方式。当我可以在最小化后设置该窗口时,我正在寻找类似参数的东西应该最大化或正常。
当我启动应用程序最大化时我没有这个问题,接下来我最小化窗口并再次最大化。在这种情况下,一切正常。问题仅在启动时。
它看起来像小细节,但如果我们考虑人们每天使用的应用程序并且他们不能每天都有一些窗口,那就大了。
编辑:
几个小时后我放弃了。这是我的解决方法。尚未经过深入测试,但将来可能有人需要它。如果我发现一些错误或更好的解决方案,我会编辑它。
#include "mainwindow.h"
#include <QSettings>
#include <QCloseEvent>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), settings("MyCompany", "MyApp") {
settingsReaded = false;
startMinimized = true;
if(startMinimized) showMinimized();
else show();
}
void MainWindow::closeEvent(QCloseEvent *event) {
settings.setValue("geometry", saveGeometry());
showMinimized();
event->ignore();
}
void MainWindow::readSettings() {
restoreGeometry(settings.value("geometry").toByteArray());
settingsReaded = true;
}
void MainWindow::changeEvent(QEvent * event) {
bool isActive = (event->type() == QEvent::ActivationChange && isActiveWindow());
//load settings on first window activation (click on icon of minimized window or
//open window if we have startMinimized = false
//settingsReaded - determine that the settings was loaded only once.
if(isActive && !settingsReaded) {
readSettings();
}
}