2013-12-04 6 views
-1

В развитии GTK3 я использую gtkcomboboxtext виджет в поляне я выбрал активный элемент как ноль, но его не working..So я написал эту строку gtk_combo_box_set_active (combo,0); в моей code.This работает, но его метание некоторого предупреждения во время компиляции как я могу это сделать чистым способом?GTK3 Comboboxtext пункт виджета по умолчанию

Предупреждение показан этот

usr/include/gtk-3.0/gtk/gtkcombobox.h:99:15: note: expected ‘struct GtkComboBox *’ but argument is of type ‘struct GtkComboBoxText *’ 
test.c:247:13: warning: passing argument 1 of ‘gtk_combo_box_set_active’ from incompatible pointer type [enabled by default] 
In file included from /usr/include/gtk-3.0/gtk/gtkappchooserbutton.h:29:0, 
       from /usr/include/gtk-3.0/gtk/gtk.h:45, 
       from test.c:1: 
+0

Подробнее код ...... пожалуйста – drahnr

ответ

1

Выдержка из документации gtk_combo_box_new (это то же самое для GtkBuilder создали виджеты, они отлиты в GtkWidget, но читать дальше):

gtk_combo_box_new() 

GtkWidget *   gtk_combo_box_new     (void); 
Creates a new empty GtkComboBox. 

Returns : 

A new GtkComboBox. 
Since 2.4 

и другое gtk_combo_box_set_active

gtk_combo_box_set_active() 

void    gtk_combo_box_set_active   (GtkComboBox *combo_box, 
                 gint index_); 
Sets the active item of combo_box to be the item at index. 

combo_box : 

A GtkComboBox 
index_ : 

An index in the model passed during construction, or -1 to have no active item 
Since 2.4 

Вопрос, очевидно, при возврате gtk_combo_box_new является GtkComboBox уже отлитым до GtkWidget (удобство), тогда как gtk_combo_box_set_active ожидает GtkCombobox.

Чтобы заставить замолчать и исправить предупреждение, используйте либо литой макрос GTK_COMBO_BOX (combo), либо (GtkComboBox*)combo вместо голого combo.

В следующий раз взгляните на документы API сначала (через сеть или через devhelp).

Смежные вопросы