0
我有一个12键的小键盘。 当某个按钮被按下时,我希望所有按钮都可以获得替代标签。 如何做到这一点,我想我需要使用一个数组为目的?修改几个GTK按钮
我有一个12键的小键盘。 当某个按钮被按下时,我希望所有按钮都可以获得替代标签。 如何做到这一点,我想我需要使用一个数组为目的?修改几个GTK按钮
是的,您需要将按钮存储在某种数据结构中,然后您需要将这些按钮用于信号处理程序回调。
这往往是最好能包住所有这些状态信息的结构,因为它很好地进行扩展:
typedef struct {
GtkWidget *keypad[12];
} GuiData;
然后,只需实例化结构一次,也许在main()
年初,和周围传递:
int main(void)
{
GuiData gui;
gui.keypad[0] = gtk_button_new_with_label("1");
/* ... */
g_signal_connect(G_OBJECT(some_widget), "clicked",
G_CALLBACK(cb_some_button_clicked), &gui);
}
请注意如何使用&gui
将指针指向GUI状态结构传递给回调函数以处理“某个按钮”的单击。
回调里面,你可以访问键盘:
static void cb_some_button_clicked(GtkWidget *object, gpointer user)
{
GuiData *guidata = user;
gtk_button_set_label(GTK_LABEL(guidata->keypad[0], "4711");
}
我到现在也没试试这个,但上面的应该是大致正确。