Gtk对象,名称,类型等



我在Glade中创建了一个带有3个按钮的窗口和vbox。所有按钮已连接"点击"事件到同一处理程序。处理程序看起来像这样:

CLICKED_btn(GtkObject *object, gpointer user_data)
{
    g_print("CLICKEDn");
}

CLICKED出现在终端上的任何点击任何按钮。这里有一种方法,通过对象或其他知道哪个按钮调用事件点击的情况下,所有按钮使用相同的处理程序?

object参数指的是生成事件的对象,在您的示例中是按钮。然后,您可以使用gtk_widget_get_name()或任何其他GtkObject/GtkWidget/GtkButton函数来改变。

:看起来,GTK/Glade的新版本没有将小部件的名称设置为它们的id,所以它保留默认值,即类型的名称。为了获得对象的id,您可以使用gtk_buildable_get_name()函数,该函数适用于任何可构建的对象。

你会得到button1, button2或者你给这些按钮起的任何名字。

请不要使用标签来区分按钮。是的,它可以工作,但这是一个坏习惯:难以维护,不利于国际化,并且违背了Glade的主要目的:将接口和代码分开。

首先使用文档为GtkButton的"click "信号提供正确的原型。

你知道你的回调原型应该是这样的:

void on_button_cliked (GtkButton *button, gpointer user_data)

button参数是接收到信号的对象,即。

最新更新