GTK +将组合框文本传递给变量

时间:2014-06-28 13:28:43

标签: c gtk

我目前正在使用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);
}

但是我从print函数得到的错误如下:

(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);

1 个答案:

答案 0 :(得分:0)

您正在尝试获取GtkButton的有效文本。发生这种情况的方法是selectgame(或任何其他回调)的第一个参数是触发事件的小部件。所以你想要这个:

g_signal_connect(G_OBJECT(downloadbutton), "clicked",
                       G_CALLBACK(selectgame), 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的最后一个参数是回调的第二个参数。

另请参阅:g_signal_connect documentation