У меня проблема с моим приложением Qt. Я могу сохранить и восстановить qeometry моего приложения без каких-либо проблем. Проблема заключается в том, что я пытаюсь сохранить геометрию развернутого приложения в закрытом событии, и после этого я пытаюсь запустить какое-то приложение в свернутом виде (что-то вроде «Запустить развертывание при запуске»). Когда я делаю это и нажимаю значок на панели задач, окно открывается как обычное окно (не развернуто).
Я могу изобразить (и написать) какой-то обходной путь, но со всей логикой графического интерфейса легко сделать некоторую ошибку, которую я предпочитаю каким-то родным способом. Я ищу что-то вроде параметра, когда я мог бы установить это окно после того, как минимизация должна быть максимальной или нормальной.
У меня нет этой проблемы, когда я запускаю приложение развернуто, затем я сверну окно и снова разверну. В этом случае все в порядке. Проблема только при запуске.
Это похоже на мелкие детали, но это большая мысль, если мы думаем о приложении, которое люди используют каждый день, и у них не может быть каждодневного окна.
РЕДАКТИРОВАТЬ:
Через несколько часов я сдаюсь.
Вот мой обходной путь. Пока не проверено глубоко, но, возможно, кому-то это понадобится в будущем.
Я отредактирую его, если найду ошибку или лучшее решение.
#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();
}
}
Задача ещё не решена.
Других решений пока нет …