linux - GLib.Settings.changed 事件未触发

标签 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

最佳答案

这里的问题不是 Vala 或 Glib,而是标准输出如何工作。 printf 不会在屏幕上打印任何内容,除非其中有换行符。

只需将 printf 行更改为:

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

你应该可以开始了!

关于linux - GLib.Settings.changed 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216731/

相关文章:

python - 如何获取图标名称的完整文件路径?

linux - 如果位置 1 上的字符和在行中找到的字符串,则 grep 整行

c++ - 绘制区域和公开事件

linux - GTK-打印 : detect if printer is configured/printing would work?

c++ - Glibmm 应用程序捕获操作系统信号

linux - 从 Gnome 管理 DNS 服务器

c - 想要更改 gtkfilechooser

linux - Linux 是否支持进程的内存隔离?

linux - 如何在 vsftpd 中强制只接受 ssl 连接?

linux - 如何将Linux用户的$HOME目录设置为/dev/null而不出现警告?