保存和恢复应用程序状态

在实际应用中,常常需要应用程序能保存程序的状态以及用户的设置,如应用程序显示的大小、位置、背景颜色或用户设置参数等信息,以便下次运行程序时,能保持上次关闭的状态。

Qt提供的QSettings类能很方便地实现保存程序设置的需求。当创始一个QSettings对象时,必须传递公司名或组织名以及应用程序名称,如下所示:

QSettingssettings("MySoft", "Star Runner");

如果在应用程序的多个地方用到QSettings,可以使用QCoreApplication::setOrganizationName()QCoreApplication::setApplicationName()来指定组织名和应用程序名。这样,就可以使用QSettings的默认构造函数了。如下所示:

QCoreApplication::setOrganizationName("MySoft");

QCoreApplication::setOrganizationDomain("mysoft.com");

QCoreApplication::setApplicationName("StarRunner");

...

QSettingssettings;

保存一个设置方法如下:

settings.setValue("editor/wrapMargin",68);

它指定了一个设置的键(QString)和一个与之关联的数据(QVariant)

读取一个设置的方法如下:

intmargin = settings.value("editor/wrapMargin").toInt();

上述语句将返回与键关联的数据,如果没有与该键关联的数据,则返回值为空。

intmargin = settings.value("editor/wrapMargin", 80).toInt();

上述语句提供了一个默认值,即当没有与键关联的数据时,返回默认值。

关于段和键的语法

可以构造层次化的键值,使用’/’作为分隔符,类似于Unix文件路径,:

settings.setValue("mainwindow/size",win->size());

settings.setValue("mainwindow/fullScreen",win->isFullScreen());

settings.setValue("outputpanel/visible",panel->isVisible());

如果保存或恢复的设置的键值拥有相同的前缀,那么可以使用beginGroup()endGroup(),代码如下所示:

settings.beginGroup("mainwindow");

settings.setValue("size",win->size());

settings.setValue("fullScreen",win->isFullScreen());

settings.endGroup();


settings.beginGroup("outputpanel");

settings.setValue("visible",panel->isVisible());

settings.endGroup();


你可能感兴趣的:(unix,qt)