Я пытаюсь сохранить геометрию всплывающего диалогового окна, а затем восстановить его, когда я вызываю всплывающее диалоговое окно (в то время как приложение все еще работает).Qt: C++: восстановление геометрии всплывающего диалогового окна
Но я не мог понять это.
Код работает без ошибок. Но окно всплывающего окна постоянно меняет позицию вертикально каждый раз, когда оно открыто. Если я не закрываю все приложение, а затем снова открываю его, всплывающее окно никогда не переходит в исходное положение в центре экрана.
Я пытаюсь использовать QcloseEvent
, QSettings
и restoreGeometry
. Но что-то не так, пожалуйста, помогите.
Вот mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_addmembersdialog.h"
#include "addmembersdialog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mpAddMembersDialog = new AddMembersDialog;
connect(ui->testBtn,SIGNAL(clicked()),this,SLOT(openPopUpForm()));
}
void MainWindow::openPopUpForm(){
mpAddMembersDialog->readSettings();
mpAddMembersDialog->exec();
}
Вот AddMembersDialog.cpp:
#include "addmembersdialog.h"
#include "ui_addmembersdialog.h"
#include <QMessageBox>
AddMembersDialog::AddMembersDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddMembersDialog)
{
ui->setupUi(this);
connect(ui->closeFormBtn,SIGNAL(clicked()),this,SLOT(Exit()));
}
void AddMembersDialog::Exit()
{
close();
}
void AddMembersDialog::closeEvent(QCloseEvent *event){
QSettings settings("DevSuda", "Muwassa");
settings.setValue("geometery", saveGeometry());
QDialog::closeEvent(event);
}
void AddMembersDialog::readSettings(){
QSettings settings("DevSuda", "Muwassa");
restoreGeometry(settings.value("QDialog/geometry").toByteArray());
}