-1

我正在尝试在 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
4

1 回答 1

2

The issue here isn't Vala or Glib, but how standard out works. A printf will print nothing to the screen unless there's a newline character in there.

Just change the printf line to:

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

And you should be good to go!

于 2013-08-13T19:03:28.217 回答