应用程序GUI状态保存在Qt中

2 user-interface qt

什么是保存Qt GUI状态的最佳和适当方式,以便在关闭应用程序时获得相同的状态?

按状态我的意思是:当前索引(对于组合框...),调色板,小部件位置......在关闭应用程序之前

Zla*_*mir 7

您可以使用QSettings类.

简单使用QSettings类(源自Qt文档的代码):

在应用程序代码成员函数的主窗口中保存和恢复设置:

void MainWindow::writeSettings()
{
    QSettings settings("reaffer Soft", "reafferApp");

    settings.beginGroup("MainWindow");
    settings.setValue("size", size());
    settings.setValue("pos", pos());
    settings.endGroup();
}

void MainWindow::readSettings()
{
    QSettings settings("reaffer Soft", "reafferApp");

    settings.beginGroup("MainWindow");
    resize(settings.value("size", QSize(400, 400)).toSize());
    move(settings.value("pos", QPoint(200, 200)).toPoint());
    settings.endGroup();
}
Run Code Online (Sandbox Code Playgroud)

从MainWindow构造函数和closeEvent覆盖中调用这两个函数,如下所示:

MainWindow::MainWindow()
{
    // code from constructor
    //...
    readSettings();
}

void MainWindow::closeEvent(QCloseEvent *event)
{
    //optional check if the user really want to quit
    // and/or if the user want to save settings
    writeSettings();
    event->accept();
}
Run Code Online (Sandbox Code Playgroud)

  • 那么,在QSettings的文档中有"恢复GUI应用程序的状态"部分:http://doc.qt.io/qt-5.5/qsettings.html (3认同)