gpt4 book ai didi

c++ - Qt: C++: 恢复弹出对话框的几何形状

转载 作者:行者123 更新时间:2023-11-30 02:32:03 26 4
gpt4 key购买 nike

我正在尝试保存弹出对话框的几何图形,然后在调用弹出对话框时(应用程序仍在运行时)将其恢复。

但是我想不通。

代码运行没有错误。但是弹出窗口每次打开时都会垂直改变它的位置。除非我关闭整个应用程序然后再次打开它,否则弹出窗口永远不会回到屏幕中央的原始位置。

我正在尝试使用 QcloseEventQSettingsrestoreGeometry。但是有些不对劲,请帮忙。

这是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());
}

最佳答案

请比较以下两行使用的 key :

settings.setValue("geometery", saveGeometry());

restoreGeometry(settings.value("QDialog/geometry").toByteArray());

“几何”“QDialog/geometry”。应该是一样的!

我还会在 cpp 文件中预定义您的 key /组织/应用程序名称,例如:

...
static const char * ksOrganization{"DevSuda"};
static const char * ksApp {"Muwassa"};
static const char * ksKey {"geometery"};
...
QSettings settings(ksOrganization, ksApp);
settings.setValue(ksKey, saveGeometry());

这将防止您在一个地方输入错误的 key ...

关于c++ - Qt: C++: 恢复弹出对话框的几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36860487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com