[英]Submit array with GTK callback function
我的主要功能中有很多檢查按鈕(cbuttons [])。
單擊安裝按鈕后,將提交帶有檢查按鈕的陣列。
int main(int argc, char *argv[]) {
GtkWidget *cbuttons[13];
[...]
for(i = 0; i < 6; i++) {
cbuttons[i] = gtk_check_button_new_with_label(cbuttons_label[i]);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cbuttons[i]), TRUE);
gtk_box_pack_start(GTK_BOX(vbox_lcbuttons), cbuttons[i], FALSE, TRUE, 0);
gtk_widget_show(cbuttons[i]);
}
[...]
g_signal_connect(button_install, "clicked", G_CALLBACK(install), &cbuttons);
}
現在,我想用data []分析不同按鈕的狀態,但是不起作用:
警告:取消引用“ void *”指針。
我是GTK的新手。 也許這是錯誤的方法嗎? 誰能以正確的方式幫助我? (對不起,我的英語不好。我不太熟悉這種語言。)
void install(GtkWidget *widget, gpointer data) {
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(*data[0]))) {
func1();
}
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(*data[1]))) {
func2();
}
[...]
}
您只需要在回調中將通用指針( gpointer
,它只是void *
的同義詞)轉換為正確類型的指針:
static void install(GtkWidget *widget, gpointer data)
{
GtkWidget **widgets = data;
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets[0]))) {
func1();
}
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets[1]))) {
func2();
}
[...]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.