【问题标题】:How to use gtk/glade in vala如何在 vala 中使用 gtk/glade
【发布时间】:2011-03-31 12:39:04
【问题描述】:

我正在尝试使用 glade/gtk/vala 制作一个简单的应用程序。到目前为止,我有这个:

using Gtk;
class HelloWorldApp : GLib.Object {
    const string UI = "test.glade";
    public Window main_window;

    [CCode (instance_pos = -1)]
    public void on_btn_hello_clicked(Button source) {
    stdout.printf("Hello, world");
    }

    construct {
        Builder builder = new Builder();
        builder.add_from_file(UI);
        main_window = builder.get_object("window1") as Window;
        main_window.destroy.connect(Gtk.main_quit);
        builder.connect_signals(this);
    }
}

class HelloWorld : GLib.Object {
    public static int main(string[] args) {
        Gtk.init (ref args);
        HelloWorldApp h = new HelloWorldApp();
        h.main_window.show_all();
        Gtk.main();
        return 0;
    }
}

当我运行它时,它会输出: (helloworld:22641): Gtk-WARNING **: 找不到信号处理程序'on_btn_hello_clicked' 但除了没有被调用的处理程序之外运行良好

我做错了什么?

【问题讨论】:

  • demonicode.ghoster.io/… 上有一个关于如何使用 Glade 和 Vala 编写 GUI 应用程序的很好的入门教程 - 看看,它实际上非常简单!在找到本教程之前,我被困了几个月:(

标签: gtk glade vala


【解决方案1】:

你做错了以下三件事中的一件或多件:

  1. 当您使用Gtk.Builder 编译程序时,您必须将--pkg gmodule-2.0 添加到您的valac 命令行。 (link)
  2. 当您将信号处理程序放在类和/或命名空间中时,您必须将类和/或命名空间名称添加到 Glade 中的处理程序名称中,因此您应该连接到 hello_world_app_on_btn_hello_clicked(link)
  3. 如果您使用的是 Windows,还必须添加 [CCode (cname="G_MODULE_EXPORT on_btn_hello_clicked")](link)

【讨论】:

    【解决方案2】:

    live.gnome.org 包含所有这些信息,包括 Windows 怪癖:http://live.gnome.org/Vala/GTKSample#Loading_User_Interface_from_XML_File

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多