gpt4 book ai didi

c++ - 以之前的大小显示 QDialog

转载 作者:行者123 更新时间:2023-11-28 06:53:13 24 4
gpt4 key购买 nike

我有一个派生自 QDialog 的类。我有一个静态实例,我使用 exec 多次显示它。如果用户手动调整对话框的大小,我希望以后调用 exec 以以前的大小启动它。

我看过一些使用 QSettings 的例子,但似乎应该有一个更简单的解决方案,因为我在内存中仍然有相同的 QDialog 实例(也我不一定希望设置在应用程序运行之间保持不变。

让对话实例记住上次调用 exec 的大小的最简单方法是什么?

最佳答案

只需在对话框类中使用一个静态变量,这是一个完整的示例应用程序(使用 4.8.x):

#include <QApplication>
#include <QDialog>
#include <QHBoxLayout>
#include <QLabel>
#include <QDebug>

class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog(QWidget *parent = 0)
: QDialog(parent)
{
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(new QLabel("Test Label"));
}

public Q_SLOTS:
virtual int exec() {
resize(s_dialogSize);
return QDialog::exec();
}

protected:
void closeEvent(QCloseEvent *event) {
Q_UNUSED(event)
s_dialogSize = size();
}

private:
static QSize s_dialogSize;

};

QSize MyDialog::s_dialogSize;
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyDialog dialog;
qDebug() << dialog.exec();
qDebug() << dialog.exec();
qDebug() << dialog.exec();
return app.exec();
}

#include "main.moc"

我这里只实现了 closeEvent,但是如果你想在接受/拒绝时保存大小,你需要将它保存到那些方法中的变量中(它们都是虚方法,可以在一个相似的时尚)。

关于c++ - 以之前的大小显示 QDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500638/

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