<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 樹型和鏈表存儲類型結構的不同,今天也是看例子學會了如何使用相關函數。先看下效果吧! ![](https://box.kancloud.cn/2016-08-24_57bd779a4ede5.jpg) ~~~ /*File:tree.c *Auth:sjin *Date:2014-03-23 *Mail:413977243@qq.com */ #include <gtk/gtk.h> enum{ ID_COLUMN, TOGGLE_COLUMN, TEXT_COLUMN, N_COLUMN }; typedef struct _listitem ListItem; struct _listitem{ gint id; gboolean toggle; const gchar *text; }; ListItem t[5] = { {1,TRUE,"小明"}, {2,FALSE,"大寶"}, {3,TRUE,"測試用名稱"}, {4,FALSE,"顯示的文本"}, {5,TRUE,"是可編輯的"} }; GtkListStore * create_list_model(void) { GtkListStore *list_store; GtkTreeIter iter; gint i; /*創建一個存儲,行數和對應的數據類型列表*/ list_store = gtk_list_store_new(N_COLUMN,G_TYPE_INT,G_TYPE_BOOLEAN,G_TYPE_STRING); for(i = 0;i < 5;i++){ /*向LIST_trore添加一個新行 * iter將指向這個新行,這個函數調用后事空的 * 需要gtk_list_store_set()函數來填寫數值 * */ gtk_list_store_append(list_store,&iter); gtk_list_store_set(list_store,&iter,ID_COLUMN,t[i].id, TOGGLE_COLUMN,t[i].toggle, TEXT_COLUMN,t[i].text, -1); } return list_store; } GtkWidget* create_list(GtkListStore* list_store) { GtkWidget* view; GtkTreeModel* model; GtkCellRenderer* renderer; GtkTreeViewColumn* column; model = GTK_TREE_MODEL(list_store); /*創建一個模型初始化model的控件*/ view = gtk_tree_view_new_with_model(model); /*創建一個文本單元繪制器*/ renderer = gtk_cell_renderer_text_new(); /*創建一個視圖列表*/ column = gtk_tree_view_column_new_with_attributes("數字",renderer,"text",ID_COLUMN,NULL); /*附加一列列表*/ gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); /*創建一個開關單元繪制器*/ renderer = gtk_cell_renderer_toggle_new(); /*設置控件屬性*/ g_object_set(G_OBJECT(renderer),"activatable",TRUE,NULL); /*設置開關單元繪制器為:當為TURE時為單元按鈕,為FAULE時為多選按鈕*/ gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(renderer),TRUE); /**/ column = gtk_tree_view_column_new_with_attributes("按鈕",renderer,"active",TOGGLE_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer),"editable",TRUE,NULL); column = gtk_tree_view_column_new_with_attributes("文本",renderer,"text",TEXT_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); return view; } void show_list(void) { GtkWidget* window; GtkWidget* frame; GtkWidget* view; GtkListStore* model; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),window); gtk_window_set_title(GTK_WINDOW(window),"TREEVIEW --使用 LISTSTORE"); gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window),10); frame = gtk_frame_new("可編輯的列表"); gtk_frame_set_label_align(GTK_FRAME(frame),1.0,0); gtk_container_add(GTK_CONTAINER(window),frame); /*創建一個存儲列表*/ model = create_list_model(); /*創建單元格列表*/ view = create_list(model); gtk_container_add(GTK_CONTAINER(frame),view); gtk_widget_show_all(window); } enum { XCLASS_COLUMN, LEADER_COLUMN, STUDENTS_COLUMN, GIRLS_COLUMN }; typedef struct _treeitem TreeItem; struct _treeitem{ const char* xclass; const char* leader; gint students; gint girls; }; TreeItem ti[3] = { {"一年級一班","李曉",40,20}, {"一年級二班","張紅",44,18}, {"一年級三班","劉麗",42,20} }; TreeItem tj[3] = { {"二年級一班","王可",34,16}, {"二年級二班","趙倩",34,18}, {"二年級三班","猶可",38,20} }; GtkTreeStore* create_tree_model(void) { GtkTreeStore* treestore; GtkTreeIter iter,parent; gint i; /*創建樹型存儲結構,每行都有一種存儲類型*/ treestore = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_INT,G_TYPE_INT); /*向樹型存儲結構添加新行 *iter 指向新行的空間 * */ gtk_tree_store_append(treestore,&iter,NULL); gtk_tree_store_set(treestore,&iter,0,"一年級",-1); gtk_tree_store_append(treestore,&iter,NULL); gtk_tree_store_set(treestore,&iter,0,"二年級",-1); /*gboolean gtk_tree_model_get_iter_from_string(GtkTreeModel *treestore, * GtkTreeIter *iter, * const gchar *path_string); * 參數:treestore :存儲樹形列表 * iter : 指向存儲結構 * path_string : 路徑 * 返回值:TRUE : iter 不為空 * FAule: 為空 * */ if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(treestore),&parent,"0")){ for(i = 0; i < 3; i++){ gtk_tree_store_append(treestore,&iter,&parent); gtk_tree_store_set(treestore,&iter, XCLASS_COLUMN,ti[i].xclass, LEADER_COLUMN,ti[i].leader, STUDENTS_COLUMN,ti[i].students, GIRLS_COLUMN,ti[i].girls, -1); } } if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(treestore),&parent,"1")){ for(i = 0; i < 3; i++) { gtk_tree_store_append(treestore,&iter,&parent); gtk_tree_store_set(treestore,&iter, XCLASS_COLUMN,tj[i].xclass, LEADER_COLUMN,tj[i].leader, STUDENTS_COLUMN,tj[i].students, GIRLS_COLUMN,tj[i].girls, -1); } } return treestore; } GtkWidget* create_tree(GtkTreeStore* treestore) { GtkWidget* view; GtkCellRenderer* renderer; GtkTreeViewColumn* column; /*創建樹型顯示模型*/ view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(treestore)); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("班級名",renderer,"text",XCLASS_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("班主任",renderer,"text",LEADER_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("學生總數",renderer,"text",STUDENTS_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("女生總數",renderer,"text",GIRLS_COLUMN,NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view),column); return view; } void show_tree(void) { GtkWidget* window; GtkWidget* frame; GtkWidget* view; GtkTreeStore* model; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_widget_destroy),window); gtk_window_set_title(GTK_WINDOW(window),"TREEVIEW----使用TreeStore"); gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window),10); frame = gtk_frame_new("樹型列表"); gtk_container_add(GTK_CONTAINER(window),frame); model = create_tree_model(); view = create_tree(model); gtk_container_add(GTK_CONTAINER(frame),view); gtk_widget_show_all(window); } int main(int argc,char* argv[]) { GtkWidget* window; GtkWidget* vbox; GtkWidget* button; /*初始化*/ gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),"TREE_VIEW控件"); g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL); vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(window),vbox); button = gtk_button_new_with_label("創建列表顯示"); gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,5); g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(show_list),NULL); button = gtk_button_new_with_label("創建樹型顯示"); gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,5); g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(show_tree),NULL); gtk_widget_show_all(window); gtk_main(); return FALSE; } ~~~ ### 關于GTK學習的例子不是特別的多。這個函數更多相關的例子請給鏈接。非常感謝!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看