gpt4 book ai didi

gtk - 如何在vala中使用gtk/glade

转载 作者:行者123 更新时间:2023-12-04 10:45:08 25 4
gpt4 key购买 nike

我正在尝试使用 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”
但除处理程序未被调用外,其他运行正常

我究竟做错了什么?

最佳答案

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

  • 当您使用 Gtk.Builder 编译程序时,你要加--pkg gmodule-2.0给您的 valac命令行。 (link)
  • 当您将信号处理程序放在类和/或 namespace 中时,您必须将类和/或 namespace 名称添加到 Glade 中的处理程序名称中,因此您应该连接到 hello_world_app_on_btn_hello_clicked . (link)
  • 如果您使用的是 Windows,则还必须添加 [CCode (cname="G_MODULE_EXPORT on_btn_hello_clicked")] . (link)
  • 关于gtk - 如何在vala中使用gtk/glade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511909/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com