C++ QT 如何用QSettings 一次性把界面里的所有ui数据进行保存下次运行时自动加载配置
可以使用以下步骤来使用QSettings一次性保存和加载所有UI数据:
- 在你的项目中添加一个Settings类,该类继承自QSettings。
class Settings : public QSettings
{
public:
Settings() : QSettings("MyCompany", "MyApp") {}
void saveMainWindow(const QMainWindow* mainWindow);
void loadMainWindow(QMainWindow* mainWindow);
};
- 在Settings类中添加两个函数saveMainWindow和loadMainWindow,用于保存和加载主窗口的UI数据。
void Settings::saveMainWindow(const QMainWindow* mainWindow)
{
setValue("MainWindow/Geometry", mainWindow->saveGeometry());
setValue("MainWindow/State", mainWindow->saveState());
setValue("MainWindow/Maximized", mainWindow->isMaximized());
}
void Settings::loadMainWindow(QMainWindow* mainWindow)
{
mainWindow->restoreGeometry(value("MainWindow/Geometry").toByteArray());
mainWindow->restoreState(value("MainWindow/State").toByteArray());
if (value("MainWindow/Maximized").toBool()) {
mainWindow->showMaximized();
}
}
- 在你的主窗口类中添加一个Settings成员变量,并在构造函数中加载UI数据。
class MainWindow : public QMainWindow
{
public:
MainWindow(QWidget *parent = 0) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
settings.loadMainWindow(this);
}
private:
Ui::MainWindow *ui;
Settings settings;
};
- 在主窗口类的析构函数中保存UI数据。
MainWindow::~MainWindow()
{
settings.saveMainWindow(this);
delete ui;
}
现在你的UI数据将在程序运行时自动保存,并在下次运行时自动加载
原文地址: http://www.cveoy.top/t/topic/cwXU 著作权归作者所有。请勿转载和采集!