ポップアップ ダイアログ ボックスのジオメトリを保存し、ポップアップ ダイアログ ボックスを呼び出すたびに復元しようとしています (アプリケーションがまだ実行されている間)。
しかし、私はそれを理解できませんでした。
コードはエラーなしで実行されます。ただし、ポップアップのウィンドウは、開くたびに垂直方向に位置を変更し続けます。アプリケーション全体を閉じてから再度開かない限り、ポップアップが画面中央の元の位置に移動することはありません。
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());
}