在QT中启动最小化应用程序后恢复最大化/正常窗口

时间:2014-01-13 15:26:43

标签: c++ windows qt qsettings

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

0 个答案:

没有答案