Qt アプリに問題があります。アプリの qeometry を問題なく保存および復元できます。問題は、close イベントで最大化されたアプリの saveGeometry を試みた後、最小化されたアプリ (「起動時に最小化して実行」など) を起動しようとしたときです。それを行ってタスクバーのアイコンをクリックすると、ウィンドウは通常のウィンドウとして開きます(最大化されていません)。
いくつかの回避策をイメージ (および記述) することはできますが、すべての 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();
}
}