GtkCombobox学习笔记

GtkCombobox学习笔记

今天做东西时用到了一点GtkCombobox一点稍微复杂的功能,以前一直使用的简单text形式(下文有在DEVHELP中的原文)实现不了,然后就研究了下GtkTreeStoreGtkCombobox联合使用的情况.

主要借鉴了帮助文档和此网址的内容:

http://blog.csdn.net/caterpillar_here/article/details/2632833

下面是简单情况

Inaddition to the model-view API,GtkComboBoxoffersa simple API which is suitable for text-only combo boxes, and hidesthe complexity of managing the data in a model. It consists of thefunctions

gtk_combo_box_new_text(),

gtk_combo_box_append_text(),

gtk_combo_box_insert_text(),

gtk_combo_box_prepend_text(),

gtk_combo_box_remove_text()

gtk_combo_box_get_active_text().

下面介绍GtkTreeStoreGtkCombobox联合使用的情况


这里使用了Model-View模式,特殊的地方是,他使用combobox来替代了treeview的功能.

这里只说明完整功能最少模块.

第一部分:GtkTreeStore 部分

GtkTreeStore*combobox_treestore;




combobox_treestore= gtk_tree_store_new (1,G_TYPE_STRING);


第二部分:显示部分GtkCombobox

GtkWidget*combobox_office;

GtkCellRenderer* renderer;




combobox_office=gtk_combo_box_new_with_model(GTK_TREE_MODEL(combobox_treestore));




renderer= gtk_cell_renderer_text_new();

gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox_office),renderer,FALSE);

gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT(combobox_office),renderer,"text",0,NULL);


/*上面这三行,就对应了GtkTreeView里面对应的以下内容

cell_renderer = gtk_cell_renderer_text_new ();

column =

gtk_tree_view_column_new_with_attributes("性别",cell_renderer,"text",COLUMN_PERSON_SEX,NULL);

gtk_tree_view_append_column(GTK_TREE_VIEW (treeview),column);

*/


第三部分:TreeView使用方式一样

gtk_tree_store_append (GTK_TREE_STORE(combobox_treestore),&iter,NULL);

gtk_tree_store_set (GTK_TREE_STORE(combobox_treestore),&iter, 0,row[0],-1);




第四部分:获取当前选定的条目

    GtkTreeModel * combobox_treemodel;

    combobox_treemodel = gtk_combo_box_get_model(combobox_office);
    gtk_combo_box_get_active_iter(combobox_office, &iter);
    gtk_tree_model_get(combobox_treemodel, &iter,0, &office_name,-1);

就用到这三个函数,具体参数意义去看devhelp




如此这般,就可以正常使用GtkCombobox


PS:我是使用了TreeView后又使用的这个,所以是比较和TreeView来看的.


你可能感兴趣的:(tree,layout,null,Office,attributes,gtk)