我目前正在使用 GTK+ 2.x 编写一个程序,并且我有一个包含一些选项的组合框。我想,当我按下按钮时将所选选项传递给变量。这是我的功能:
static void selectgame(GtkComboBox *gamelist, gpointer data){
gchar *game = gtk_combo_box_get_active_text(gamelist);
g_print( "Selected (simple): >> %s <<\n", ( game ? game : "NULL" ) );
g_free(game);
}
但是我从打印函数得到的错误如下:
(Senorita.exe:2228): Gtk-CRITICAL **: gtk_combo_box_get_active_text: assertion `
GTK_IS_COMBO_BOX (combo_box)' failed
如果我设置 g_signal_connect 在组合框更改时调用该函数,则它可以工作。但当按下按钮时,却没有。这是我调用按钮按下的代码:
g_signal_connect(G_OBJECT(downloadbutton), "clicked",
G_CALLBACK(selectgame), NULL);
最佳答案
您正在尝试获取 GtkButton 的事件文本。发生这种情况的方式是 selectgame (或任何其他回调)的第一个参数是触发事件的小部件。所以你想要这个:
g_signal_connect(G_OBJECT(downloadbutton), "clicked",
G_CALLBACK(selectgame), gamelist);
其中 gamelist 是您的组合框
还有
static void selectgame(GtkWidget *downloadbutton, GtkComboBox gamelist){
gchar *game = gtk_combo_box_get_active_text(gamelist);
g_print( "Selected (simple): >> %s <<\n", ( game ? game : "NULL" ) );
g_free(game);
}
你应该可以开始了!
原因是 g_signal_connect
的最后一个参数是回调的第二个参数。
关于c - GTK+ 将组合框文本传递给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24467291/