2015-01-07 32 views
2

我想要做一个GTK 2+中的下拉菜单,并且我得出的结论是它们被称为“gtk_combo_box”。但是,每当我尝试编译,它给了我丢失的参数的函数错误...Gtk组合框函数缺少参数和表达式

这里是一个重要的部分代码:

vbox3_field = gtk_vbox_new (FALSE, 0); 
    gtk_container_add (GTK_CONTAINER (hbox2), vbox3_field); 
    gtk_box_pack_start (GTK_BOX (hbox2), vbox3_field, FALSE, TRUE, 0); 

    vbox3_sett = gtk_vbox_new (FALSE, 0); 
    gtk_container_add (GTK_CONTAINER (hbox2), vbox3_sett); 

    ball_menu=gtk_combo_box_text_new(); 
    gtk_combo_box_text_append_text (GtkComboBoxText ball_menu, "1"); 
    gtk_combo_box_text_append_text (GtkComboBoxText ball_menu, "2"); 
    gtk_combo_box_set_active (GtkComboBox *combo_box, 0); 
    //g_signal_connect (ball_menu, "changed", G_CALLBACK (cb_ball_selection), gtk_combo_box_text_get_active_text()); 
gtk_box_pack_start(GTK_BOX (vbox3_sett), ball_menu); 

当我尝试采取“GtkComboBoxText”出来的函数参数,它仍然给我一个警告,说不兼容的指针类型。 (我宣布“ball_menu”为GtkWidget * ball_menu)。

的功能被定义为遵循GTK 2+参考网站:

void 
gtk_combo_box_text_append_text (GtkComboBoxText *combo_box, 
           const gchar *text); 

以下是编译的结果:

gcc -o main main.c `pkg-config --cflags --libs gtk+-2.0` -lm 
main.c: In function ‘main’: 
main.c:265:35: error: expected expression before ‘GtkComboBox’ 
    gtk_combo_box_text_append_text (GtkComboBoxText ball_menu, "1"); 
           ^
main.c:265:35: error: too few arguments to function ‘gtk_combo_box_text_append_text’ 
In file included from /usr/include/gtk-2.0/gtk/gtk.h:74:0, 
       from main.c:1: 
/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h:63:15: note: declared here 
void   gtk_combo_box_text_append_text  (GtkComboBoxText  *combo_box, 
      ^
main.c:266:35: error: expected expression before ‘GtkComboBoxText’ 
    gtk_combo_box_text_append_text (GtkComboBoxText ball_menu, "2"); 
           ^
main.c:266:35: error: too few arguments to function ‘gtk_combo_box_text_append_text’ 
In file included from /usr/include/gtk-2.0/gtk/gtk.h:74:0, 
       from main.c:1: 
/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h:63:15: note: declared here 
void   gtk_combo_box_text_append_text  (GtkComboBoxText  *combo_box, 
      ^
main.c:267:29: error: expected expression before ‘GtkComboBox’ 
    gtk_combo_box_set_active (GtkComboBox *combo_box, 0); 
          ^
main.c:267:29: error: too few arguments to function ‘gtk_combo_box_set_active’ 
In file included from /usr/include/gtk-2.0/gtk/gtk.h:72:0, 
       from main.c:1: 
/usr/include/gtk-2.0/gtk/gtkcombobox.h:101:15: note: declared here 
void   gtk_combo_box_set_active  (GtkComboBox  *combo_box, 
      ^

有谁知道要做到这一点的原因是什么?

回答

4
gtk_combo_box_text_append_text (GtkComboBoxText ball_menu, "1"); 

没有一个有效的投/转换,改变

gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(ball_menu), "1"); 
+1

好,它的工作,谢谢。 请注意,对于gtk_combo_box_set_active,演员似乎是GTK_COMBO_BOX。 – Kelthar