gpt4 book ai didi

c - 如何连接 GtkAction 信号?

转载 作者:行者123 更新时间:2023-12-04 05:59:37 28 4
gpt4 key购买 nike

我正在尝试将 GtkAction 信号连接到回调 open_file ,但显然我遗漏了一些东西,因为当我在文件菜单中选择 Open 时没有任何 react 。有什么线索吗?

测试.c

#include <gtk/gtk.h>

void open_file(GtkAction *action, gpointer user_data)
{
g_print("open_file\n");
}


int main(int argc, char *argv[])
{
GtkBuilder *builder;
GObject *window;

gtk_init(&argc, &argv);

builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "test.ui", NULL);

window = gtk_builder_get_object(builder, "window");
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(GTK_WIDGET(window));

gtk_main();
return 0;
}

测试界面
<interface>
<object class="GtkUIManager" id="uiman">
<child>
<object class="GtkActionGroup" id="actiongroup">
<child>
<object class="GtkAction" id="file">
<property name="label">_File</property>
</object>
</child>
<child>
<object class="GtkAction" id="open">
<property name="stock_id">gtk-open</property>
<signal name="activate" handler="open_file"/>
</object>
</child>
</object>
</child>
<ui>
<menubar name="menu_bar">
<menu action="file">
<menuitem action="open"/>
</menu>
</menubar>
</ui>
</object>

<object id="window" class="GtkWindow">
<property name="title">Test</property>
<child>
<object class="GtkVBox" id="vbox">
<child>
<object class="GtkMenuBar" id="menu_bar" constructor="uiman"/>
<packing>
<property name="expand">FALSE</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

最佳答案

除非您调用 gtk_builder_connect_signals(),否则林间空地文件中的信号将保持断开状态。 .

关于c - 如何连接 GtkAction 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9089592/

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