Qt随笔

来源:互联网 发布:labview串口数据采集 编辑:程序博客网 时间:2024/06/05 16:51

Qt随笔 - QSettings

QSettings类提供了持久的跨平台应用程序设置。

嗯,一句话概括QSettings……

创建

来看一下原型:
QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = Q_NULLPTR)
栗子:

QSettings settings("MySoft","App");

第一个参数是公司组织名,而后是程序名。
也可以直接使用QCoreApplication::setOrganizationName()QCoreApplication::setApplicationName()默认组织程序名:

QCoreApplication::setOrganizationName("MySoft");QCoreApplication::setOrganizationDomain("mysoft.com");QCoreApplication::setApplicationName("App");...QSettings settings;

写值

1.单纯的对应

settings.setValue("height", 200);

这里便创建了一个height键并赋值为200
(如果存在相同的设置键,现有的值将被新值覆盖。为了提高效率,这些变化可能不会被立即保存到永久存储,可以随时调用sync()来提交更改)
2.前缀

settings.beginGroup("MainWindow");settings.setValue("height", 200);settings.setValue("weight", 100);settings.endGroup();

这里在MainWindow的前缀下便有了值为200的height键和值为100的weight键

读值

1.单纯的对应

settings.value("height",200);

返回相应值,第一个参数就是所对应的键的名称了,第二个参数则是默认值(也就是说如果没有height的值时,QSettings将会返回一个空QVariant(可转换为整数0),那么这时就可以使用默认值)
2.前缀

settings.beginGroup("MainWindow");settings.value("height", 200);settings.value("weight", 100);settings.endGroup();

同上,同上~

键的操作

1.获取所有键
QStringList QSettings::allKeys() const
无参数,返回一个包含所有键的QStringList(注意 include!)
来吧,看看官方的Example:

QSettings settings;settings.setValue("fridge/color", QColor(Qt::white));settings.setValue("fridge/size", QSize(32, 96));settings.setValue("sofa", true);settings.setValue("tv", false);QStringList keys = settings.allKeys();// keys: ["fridge/color", "fridge/size", "sofa", "tv"]

2.获取所有子键集
QStringList QSettings::childGroups() const
官方的Example:

QSettings settings;settings.setValue("fridge/color", QColor(Qt::white));settings.setValue("fridge/size", QSize(32, 96));settings.setValue("sofa", true);settings.setValue("tv", false);QStringList groups = settings.childGroups();// groups: ["fridge"]

3.获取所有子键
QStringList QSettings::childKeys() const
Example:

QSettings settings;settings.setValue("fridge/color", QColor(Qt::white));settings.setValue("fridge/size", QSize(32, 96));settings.setValue("sofa", true);settings.setValue("tv", false);QStringList keys = settings.childKeys();// keys: ["sofa", "tv"]

4.判断是否存在指定的键
bool QSettings::contains(const QString & key) const
5. 删除相关的键
void QSettings::remove(const QString & key)
4.删除所有键
void QSettings::clear()

嗯,终于写完了,自己目前正好要做一个有关QSettings的项目,心里有底了……感觉QSettings的文档里的example是有史以来最多的……