GLib.Settings.changed事件未触发

时间:2013-08-13 18:42:22

标签: linux gtk gnome glib vala

我试图在Vala中编写应用程序,并在Vala文档中查找了如何使用GLib.Settings(dconf)。获取和设置值有效。但是,当我尝试使用changed事件检测架构或特定键的更改时,事件根本不会触发。

示例:http://pastebin.com/dGuP9GyX

由于某种原因,改变的事件永远不会发生。 bind ()方法也不起作用(仅在一个方向上)。

忘记下面的例子......当你添加\ n时,实际上它会起作用......由于某种原因......

这里有一个小例子来说明。使用以下命令编译; valac --pkg gio-2.0 --pkg gtk+-3.0 main.vala

int main (string[] args)
{
    Gtk.init (ref args);

    GLib.Settings settings = new GLib.Settings ("org.pantheon.terminal.settings");
    settings.changed["allow-bold"].connect (somethingChanged);

    Gtk.main ();

    return 0;
}

void somethingChanged ()
{
    stdout.printf ("Something changed");
}

当运行这个小例子时,无论如何,程序将继续运行。无论我在指定的dconf架构中更改了多少设置,它都不会输出任何内容。

希望有人能帮我摆脱这个障碍。

robin@RobinJ:~$ valac --version
Vala 0.20.1

1 个答案:

答案 0 :(得分:2)

这里的问题不是Vala或Glib,而是标准的运作方式。除非在那里有换行符,否则printf将不会在屏幕上打印任何内容。

只需将printf行更改为:

stdout.printf ("Something changed\n");

你应该好好去!