signal_button_press_event()无法被正确触发


//可能由于signal_row_activated()的原因,TreeView控件的signal_button_press_event()无法被正确触发,只能用release_event()代替;


如果ref_model删除空了,row就没法儿展开,尽管on_expanded()中erase后会重新添加项目
只要进行过erase操作,可以展开,但是只有移动一下鼠标才能合起来

用错了信号处理函数

转载于:https://www.cnblogs.com/kangtuohongwai/p/6002549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
g_signal_connect是GLib库中用于信号与槽(回调函数)连接的函数。在GObject系统中,对象可以发出信号,而其它对象可以通过连接信号来接收这些信号并执行相应的槽(回调函数)。 函数原型: ```c gulong g_signal_connect (gpointer instance, const gchar *detailed_signal, GCallback c_handler, gpointer data); ``` 参数解释: - `instance`:需要连接信号的对象实例。 - `detailed_signal`:信号名和详细信息的字符串,格式为"signal_name::detail"。例如,"clicked::left"表示鼠标左键点击事件。可以使用g_signal_list_ids()函数获取所有信号的详细信息。 - `c_handler`:回调函数的指针,用于处理信号。 - `data`:传递给回调函数的额外数据,可以为NULL。 函数返回值: 返回一个无符号长整型的值,代表连接的id。可以使用g_signal_handler_disconnect()函数断开连接。 使用示例: ```c #include <gtk/gtk.h> /* 回调函数 */ static void on_button_clicked(GtkWidget *widget, gpointer data) { g_print("Button clicked!\n"); } int main(int argc, char *argv[]) { GtkWidget *window, *button; gulong handler_id; /* 初始化GTK+ */ gtk_init(&argc, &argv); /* 创建窗口 */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Hello World"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); /* 创建按钮 */ button = gtk_button_new_with_label("Click me!"); gtk_container_add(GTK_CONTAINER(window), button); /* 连接信号和槽 */ handler_id = g_signal_connect(button, "clicked", G_CALLBACK(on_button_clicked), NULL); /* 显示窗口 */ gtk_widget_show_all(window); /* 主循环 */ gtk_main(); /* 断开连接 */ g_signal_handler_disconnect(button, handler_id); return 0; } ``` 在上面的示例中,我们创建了一个窗口和一个按钮,并连接了按钮的clicked信号和on_button_clicked回调函数。当按钮被点击时,回调函数将被调用并输出一条信息。最后,我们使用g_signal_handler_disconnect()函数断开连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值