我的Qt应用有问题。我可以毫无问题地保存和恢复我的应用程序的测量。问题是当我尝试在关闭事件中保存最大化应用程序的Geometry时,之后我尝试将某个应用程序最小化(类似于“在启动时运行模拟”)。当我这样做并且单击任务栏上的图标时,窗口将作为普通窗口打开(未最大化)。
我可以对一些解决方法进行成像(并编写),但是对于所有Gui逻辑,我很容易做出一些错误,我喜欢一些原生方式。我正在寻找像Parametr这样的东西,当我可以设置该窗口后,最小化应该最大化或正常。
当我启动应用程序最大化时,我没有这个问题,接下来我最小化窗口并再次最大化。在这种情况下,一切都很好。问题仅在启动时。
看起来像小的细节,但是如果考虑人们每天使用的app,并且每天不能有一些窗口的话,是大的想法。
编辑:
几个小时后我放弃了。 这是我的解决方法。尚未经过深入测试,但未来可能有人需要它。 如果我发现一些错误或更好的解决方案,我会编辑它。
#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();
}
}