GSettings简介和使用

1、Gsetting介绍

GSettings类为应用程序设置存储和检索提供了方便的API。
读取和写入可以被认为是非阻塞的。使用GSettings读取设置通常非常快:在大致相同的数量级(但慢于)GHashTable查找。写入设置方面也非常快,但对于其他线程和其他进程来说,写入设置可能非常昂贵。许多设置后端(包括dconf)都有延迟初始化,这意味着在用户使用计算机的常见情况下,无需修改任何设置即可避免大量工作。对于dconf,在这种情况下,D-Bus服务甚至不需要启动。

GSettings 项目是由一个叫 schema 的文件所声明的,这是一个正规的 XML 文件。示例如下:

<schemalist>

  <enum id="org.gtk.Test.myenum">
    <value nick="first" value="1"/>
    <value nick="second" value="2"/>
  </enum>

  <flags id="org.gtk.Test.myflags">
    <value nick="flag1" value="1"/>
    <value nick="flag2" value="2"/>
    <value nick="flag3" value="4"/>
  </flags>

  <schema id="org.gtk.Test">

    <key name="key-with-range" type="i">
      <range min="1" max="100"/>
      <default>10</default>
    </key>

    <key name="key-with-choices" type="s">
      <choices>
        <choice value='Elisabeth'/>
        <choice value='Annabeth'/>
        <choice value='Joe'/>
      </choices>
      <aliases>
        <alias value='Anna' target='Annabeth'/>
        <alias value='Beth' target='Elisabeth'/>
      </aliases>
      <default>'Joe'</default>
    </key>

    <key name='enumerated-key' enum='org.gtk.Test.myenum'>
      <default>'first'</default>
    </key>

    <key name='flags-key' flags='org.gtk.Test.myflags'>
      <default>["flag1","flag2"]</default>
    </key>
  </schema>
</schemalist>
需要注意的是(1)path 必须是两头都有 /,不然会校验失败。(2)这个文件的扩展名必须是 .gschema.xml

GSettings 只认二进制的文件,这个二进制的文件是通过一个叫做 glib-compile-schemas 的编译器生成的,如:glib-compile-schemas /usr/share/glib-2.0/schemas
2、Gsettings使用

1、你首先应该写一个 XML 规范文件,将它复制入 GSettings 会读取的一个文件夹,然后用 glib-compile-schemas 将它安装即可。

2、使用g_settings_new创建一个Gsettings对象。

3、修改Gsettings:

gint
g_settings_get_enum (GSettings *settings,
                     const gchar *key);
gboolean
g_settings_set_enum (GSettings *settings,
                     const gchar *key,
                     gint value);

4、绑定GObject,使用函数g_settings_bind_with_mapping。bind 函数会将某个 GObject 对象属性与一个 GSettings 键绑定,unbind 是解绑定用的。绑定后,如果写入一个值,GObject 对象会被更新,如果设置了 GObject 对象的属性,GSettings 也会更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值