GtkComboBox采用了模型-视图的模式实现,如果只是需要简单的包含字符的列表框,可以使用GtkComboBoxText控件
代码
#include <gtk/gtk.h>
int main() {
gtk_init(NULL, NULL);
GtkWidget *window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);
gtk_window_set_title(GTK_WINDOW(window), "demo");
//新建liststore,1列,G_TYPE_STRING类型
GtkListStore *listStore = gtk_list_store_new(1,G_TYPE_STRING);
GtkTreeIter iter;
//liststore新建项
gtk_list_store_append(listStore,&iter);
//设置第0列数据
gtk_list_store_set(listStore,&iter,0,"选择1",-1);
//新建项
gtk_list_store_append(listStore,&iter);
//设置第0列数据
gtk_list_store_set(listStore,&iter,0,"选择2",-1);
//新建项
gtk_list_store_append(listStore,&iter);
//设置第0列数据
gtk_list_store_set(listStore,&iter,0,"选择3",-1);
//GtkComboBox
GtkWidget *comboBox = gtk_combo_box_new_with_model(GTK_TREE_MODEL(listStore));
//GtkCellRenderer
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
//将GtkCellRenderer加入comboBox
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(comboBox),renderer,TRUE);
//设置renderer text属性与第0列关联
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(comboBox),renderer,"text",0,NULL);
//加入容器
gtk_container_add(GTK_CONTAINER(window),comboBox);
//显示所有控件
gtk_widget_show_all(window);
//关联回调函数
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
结果
