亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gtktreemodel.sgml

?? linux下電話本所依賴的一些圖形庫
?? SGML
?? 第 1 頁 / 共 2 頁
字號:
<!-- ##### SECTION Title ##### -->GtkTreeModel<!-- ##### SECTION Short_Description ##### -->The tree interface used by #GtkTreeView<!-- ##### SECTION Long_Description ##### --><para>The #GtkTreeModel interface defines a generic tree interface for use bythe #GtkTreeView widget.  It is an abstract interface, and is designedto be usable with any appropriate data structure.  The programmer justhas to implement this interface on their own data type for it to beviewable by a #GtkTreeView widget.</para><para>The model is represented as a hierarchical tree of strongly-typed,columned data.  In other words, the model can be seen as a tree whereevery node has different values depending on which column is beingqueried.  The type of data found in a column is determined by using theGType system (ie. #G_TYPE_INT, #GTK_TYPE_BUTTON, #G_TYPE_POINTER, etc.).The types are homogeneous per column across all nodes.  It is importantto note that this interface only provides a way of examining a model andobserving changes.  The implementation of each individual model decideshow and if changes are made.</para><para>In order to make life simpler for programmers who do not need to writetheir own specialized model, two generic models are provided &mdash; the#GtkTreeStore and the #GtkListStore.  To use these, the developer simplypushes data into these models as necessary.  These models provide thedata structure as well as all appropriate tree interfaces.  As a result,implementing drag and drop, sorting, and storing data is trivial.  Forthe vast majority of trees and lists, these two models are sufficient.</para><para>Models are accessed on a node/column level of granularity.  One canquery for the value of a model at a certain node and a certain columnon that node.  There are two structures used to reference a particularnode in a model.  They are the #GtkTreePath and the #GtkTreeIter<footnote><para>Here, <abbrev>iter</abbrev> is short for <quote>iterator</quote></para></footnote>Most of the interface consists of operations on a #GtkTreeIter.</para><para>A path is essentially a potential node.  It is a location on a modelthat may or may not actually correspond to a node on a specific model.The #GtkTreePath struct can be converted into either an array ofunsigned integers or a string.  The string form is a list of numbersseparated by a colon.  Each number refers to the offset at that level.Thus, the path <quote>0</quote> refers to the root node and the path<quote>2:4</quote> refers to the fifth child of the third node.</para><para>By contrast, a #GtkTreeIter is a reference to a specific node on aspecific model.  It is a generic struct with an integer and threegeneric pointers.  These are filled in by the model in a model-specificway.  One can convert a path to an iterator by callinggtk_tree_model_get_iter().  These iterators are the primary way ofaccessing a model and are similar to the iterators used by#GtkTextBuffer.  They are generally statically allocated on the stack andonly used for a short time.  The model interface defines a set ofoperations using them for navigating the model.</para><para>It is expected that models fill in the iterator with private data.  Forexample, the #GtkListStore model, which is internally a simple linkedlist, stores a list node in one of the pointers.  The #GtkTreeModelSortstores an array and an offset in two of the pointers.  Additionally,there is an integer field.  This field is generally filled with a uniquestamp per model.  This stamp is for catching errors resulting from usinginvalid iterators with a model.</para><para>The lifecycle of an iterator can be a little confusing at first.Iterators are expected to always be valid for as long as the model isunchanged (and doesn't emit a signal).  The model is considered to ownall outstanding iterators and nothing needs to be done to free them fromthe user's point of view.  Additionally, some models guarantee that aniterator is valid for as long as the node it refers to is valid (mostnotably the #GtkTreeStore and #GtkListStore).  Although generallyuninteresting, as one always has to allow for the case where iteratorsdo not persist beyond a signal, some very important performanceenhancements were made in the sort model.  As a result, the#GTK_TREE_MODEL_ITERS_PERSIST flag was added to indicate this behavior.</para><para>To help show some common operation of a model, some examples areprovided.  The first example shows three ways of getting the iter at thelocation <quote>3:2:5</quote>.  While the first method shown is easier,the second is much more common, as you often get paths from callbacks.</para><para><example><title>Acquiring a <structname>GtkTreeIter</structname></title><programlisting>/* Three ways of getting the iter pointing to the location */{  GtkTreePath *path;  GtkTreeIter iter;  GtkTreeIter parent_iter;  /* get the iterator from a string */  gtk_tree_model_get_iter_from_string (model, &amp;iter, "3:2:5");  /* get the iterator from a path */  path = gtk_tree_path_new_from_string ("3:2:5");  gtk_tree_model_get_iter (model, &amp;iter, path);  gtk_tree_path_free (path);  /* walk the tree to find the iterator */  gtk_tree_model_get_nth_child (model, &amp;iter, NULL, 3);  parent_iter = iter;  gtk_tree_model_get_nth_child (model, &amp;iter, &amp;parent_iter, 2);  parent_iter = iter;  gtk_tree_model_get_nth_child (model, &amp;iter, &amp;parent_iter, 5);}</programlisting></example></para><para>This second example shows a quick way of iterating through a list andgetting a string and an integer from each row.  The<function>populate_model</function> function used below is not shown, asit is specific to the #GtkListStore.  For information on how to writesuch a function, see the #GtkListStore documentation.<example><title>Reading data from a <structname>GtkTreeModel</structname></title><programlisting>enum{  STRING_COLUMN,  INT_COLUMN,  N_COLUMNS};{  GtkTreeModel *list_store;  GtkTreeIter iter;  gboolean valid;  gint row_count = 0;  /* make a new list_store */  list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_INT);  /* Fill the list store with data */  populate_model (list_store);  /* Get the first iter in the list */  valid = gtk_tree_model_get_iter_first (list_store, &amp;iter);  while (valid)    {      /* Walk through the list, reading each row */      gchar *str_data;      gint   int_data;      /* Make sure you terminate calls to gtk_tree_model_get(<!-- -->)       * with a '-1' value       */      gtk_tree_model_get (list_store, &amp;iter,                           STRING_COLUMN, &amp;str_data,                          INT_COLUMN, &amp;int_data,                          -1);      /* Do something with the data */      g_print ("Row &percnt;d: (&percnt;s,&percnt;d)\n", row_count, str_data, int_data);      g_free (str_data);      row_count ++;      valid = gtk_tree_model_iter_next (list_store, &amp;iter);    }}</programlisting></example></para><!-- ##### SECTION See_Also ##### --><para>#GtkTreeView, #GtkTreeStore, #GtkListStore, <link linkend="gtk-GtkTreeView-drag-and-drop">GtkTreeDnd</link>, #GtkTreeSortable</para><!-- ##### SECTION Stability_Level ##### --><!-- ##### STRUCT GtkTreeModel ##### --><para></para><!-- ##### SIGNAL GtkTreeModel::row-changed ##### --><para></para>@treemodel: the object which received the signal.@arg1: @arg2: <!-- ##### SIGNAL GtkTreeModel::row-deleted ##### --><para></para>@treemodel: the object which received the signal.@arg1: <!-- ##### SIGNAL GtkTreeModel::row-has-child-toggled ##### --><para></para>@treemodel: the object which received the signal.@arg1: @arg2: <!-- ##### SIGNAL GtkTreeModel::row-inserted ##### --><para></para>@treemodel: the object which received the signal.@arg1: @arg2: <!-- ##### SIGNAL GtkTreeModel::rows-reordered ##### --><para></para>@treemodel: the object which received the signal.@arg1: @arg2: @arg3: <!-- ##### STRUCT GtkTreeIter ##### --><para>The <structname>GtkTreeIter</structname> is the primary structure foraccessing a structure.  Models are expected to put a unique integer inthe <structfield>stamp</structfield> member, and put model-specificdata in the three <structfield>user_data</structfield> members.</para>@stamp: A unique stamp to catch invalid iterators@user_data: Model specific data@user_data2: Model specific data@user_data3: Model specific data<!-- ##### STRUCT GtkTreePath ##### --><para></para><!-- ##### STRUCT GtkTreeRowReference ##### --><para></para><!-- ##### STRUCT GtkTreeModelIface ##### --><para></para>@g_iface: @row_changed: @row_inserted: @row_has_child_toggled: @row_deleted: @rows_reordered: @get_flags: @get_n_columns: @get_column_type: @get_iter: @get_path: @get_value: @iter_next: @iter_children: @iter_has_child: @iter_n_children: @iter_nth_child: @iter_parent: @ref_node: @unref_node: <!-- ##### USER_FUNCTION GtkTreeModelForeachFunc ##### --><para></para>@model: @path: @iter: @data: @Returns: <!-- ##### ENUM GtkTreeModelFlags ##### --><para>These flags indicate various properties of a #GtkTreeModel.  They arereturned by gtk_tree_model_get_flags(), and must be static for thelifetime of the object.  A more complete description of#GTK_TREE_MODEL_ITERS_PERSIST can be found in the overview of thissection.</para>@GTK_TREE_MODEL_ITERS_PERSIST: Iterators survive all signals emitted by the tree.@GTK_TREE_MODEL_LIST_ONLY: The model is a list only, and never has children<!-- ##### FUNCTION gtk_tree_path_new ##### --><para></para>@Returns: <!-- ##### FUNCTION gtk_tree_path_new_from_string ##### --><para></para>@path: @Returns: <!-- ##### FUNCTION gtk_tree_path_new_from_indices ##### --><para></para>@first_index: @Varargs: @Returns: <!-- ##### FUNCTION gtk_tree_path_to_string ##### --><para></para>@path: @Returns: <!-- ##### FUNCTION gtk_tree_path_new_first ##### --><para></para>@Returns: <!-- ##### MACRO gtk_tree_path_new_root ##### --><para>An alternate name for gtk_tree_path_new_first() provided forcompatibility reasons.</para>@Returns: A new #GtkTreePath.@Deprecated: Use gtk_tree_path_new_first() instead.<!-- ##### FUNCTION gtk_tree_path_append_index ##### --><para></para>@path: @index_: <!-- ##### FUNCTION gtk_tree_path_prepend_index ##### --><para></para>@path: @index_: <!-- ##### FUNCTION gtk_tree_path_get_depth ##### --><para></para>@path: @Returns: <!-- ##### FUNCTION gtk_tree_path_get_indices ##### --><para></para>@path: @Returns: <!-- ##### FUNCTION gtk_tree_path_free ##### --><para></para>@path: <!-- ##### FUNCTION gtk_tree_path_copy ##### --><para></para>@path: @Returns: <!-- ##### FUNCTION gtk_tree_path_compare ##### --><para>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色嗨嗨av一区二区三区| 日韩伦理av电影| 综合亚洲深深色噜噜狠狠网站| 亚洲成av人片在线| 9人人澡人人爽人人精品| 欧美一区二区成人| 一区二区三区欧美日韩| 成人免费黄色大片| 久久伊人蜜桃av一区二区| 午夜欧美电影在线观看| 99国产精品国产精品毛片| 精品成人一区二区三区四区| 亚洲国产精品久久人人爱| 成人激情开心网| 国产欧美一区二区三区网站| 美女一区二区久久| 欧美日韩精品欧美日韩精品| 国产精品国产a级| 成人午夜免费视频| 久久久影视传媒| 久久99这里只有精品| 欧美剧情电影在线观看完整版免费励志电影 | 日本成人中文字幕| 色狠狠综合天天综合综合| 亚洲人妖av一区二区| 国产精品自在欧美一区| 久久综合久久综合久久| 久久www免费人成看片高清| 欧美一级夜夜爽| 久久精品国产免费看久久精品| 4438成人网| 久久国产精品72免费观看| 欧美va天堂va视频va在线| 喷白浆一区二区| 精品久久一区二区三区| 国产乱一区二区| 中文字幕免费一区| 91亚洲精品久久久蜜桃| 亚洲精品国产无套在线观| 91黄视频在线观看| 日韩中文字幕av电影| 日韩欧美国产一区二区在线播放| 久久国产欧美日韩精品| 久久综合九色综合欧美就去吻 | 亚洲一二三四在线| 欧美日韩国产免费| 视频精品一区二区| 精品精品欲导航| 成人午夜碰碰视频| 一区二区三区国产精华| 欧美色图片你懂的| 美女看a上一区| 国产精品天天摸av网| 欧洲一区二区三区免费视频| 亚洲成人中文在线| 2023国产一二三区日本精品2022| 盗摄精品av一区二区三区| 亚洲国产一区二区三区青草影视| 欧美日韩国产一级| 国产精品456露脸| 亚洲一卡二卡三卡四卡无卡久久| 欧美成人精品福利| 91伊人久久大香线蕉| 偷窥少妇高潮呻吟av久久免费| 精品国产乱码久久久久久1区2区| 99久久免费国产| 理论电影国产精品| 亚洲日本电影在线| 欧美精品一区二区三区在线 | 成人天堂资源www在线| 亚洲国产精品综合小说图片区| 欧美一级生活片| 色老汉av一区二区三区| 精品一区二区三区免费| 亚洲免费毛片网站| 久久久久久免费毛片精品| 欧美优质美女网站| www.在线成人| 九九精品视频在线看| 亚洲国产日韩精品| 国产精品高清亚洲| 精品国产人成亚洲区| 91福利在线导航| av不卡一区二区三区| 国内精品免费**视频| 午夜久久福利影院| 一区二区视频在线| 国产精品丝袜一区| 久久综合资源网| 9191国产精品| 欧美在线观看视频一区二区| av在线免费不卡| 国产美女精品在线| 久久精品72免费观看| 亚洲成国产人片在线观看| 亚洲同性同志一二三专区| 久久先锋影音av鲁色资源网| 8v天堂国产在线一区二区| 91国偷自产一区二区使用方法| 高清shemale亚洲人妖| 久久成人久久鬼色| 蜜芽一区二区三区| 日韩成人dvd| 日韩国产成人精品| 水蜜桃久久夜色精品一区的特点| 亚洲精品一二三区| 亚洲精品视频在线看| 亚洲欧美日韩国产中文在线| 亚洲欧美在线高清| 国产精品丝袜在线| 最新高清无码专区| 亚洲精品乱码久久久久久久久| 综合电影一区二区三区 | 欧美日韩免费高清一区色橹橹| 91丨porny丨国产| 色久优优欧美色久优优| 欧美综合亚洲图片综合区| 欧美日韩一区二区三区不卡| 欧美男人的天堂一二区| 欧美精品粉嫩高潮一区二区| 欧美一区二区在线视频| 日韩久久久精品| 久久女同性恋中文字幕| 久久精品一级爱片| 亚洲私人影院在线观看| 一区二区三区在线视频播放| 午夜欧美大尺度福利影院在线看| 日日摸夜夜添夜夜添亚洲女人| 美女在线观看视频一区二区| 国产一区二区在线看| 波多野结衣亚洲| 欧美私人免费视频| 日韩视频国产视频| 国产亚洲午夜高清国产拍精品| 国产精品妹子av| 性感美女久久精品| 国产乱子伦一区二区三区国色天香| 国产成人综合视频| 欧美色中文字幕| www国产精品av| 亚洲激情在线激情| 国产在线国偷精品免费看| av资源网一区| 日韩午夜电影在线观看| 国产精品久久久久久久久图文区| 亚洲一卡二卡三卡四卡五卡| 狠狠色丁香久久婷婷综合丁香| 97精品视频在线观看自产线路二| 欧美日韩一区二区三区在线看 | 日韩一区二区三免费高清| 久久精品在线观看| 天天亚洲美女在线视频| 国产aⅴ综合色| 欧美绝品在线观看成人午夜影视| 国产欧美日韩精品一区| 午夜视黄欧洲亚洲| 99视频在线精品| 欧美电影免费观看高清完整版在 | 国产日韩欧美综合一区| 亚洲一区二区视频在线观看| 国产精品88888| 欧美一级国产精品| 一区二区三区在线视频观看| 国产一区二区三区综合| 欧美三级日本三级少妇99| 亚洲国产精品t66y| 久久精品国产久精国产爱| 日本国产一区二区| 中文字幕欧美国产| 精品一区二区三区视频在线观看 | 色香蕉成人二区免费| 久久精品人人做| 丝袜国产日韩另类美女| 日本黄色一区二区| 国产精品久久久久国产精品日日| 蜜桃久久av一区| 欧美久久久影院| 亚洲国产精品一区二区久久恐怖片 | 国产在线麻豆精品观看| 欧美高清视频在线高清观看mv色露露十八 | 一区二区三区蜜桃| 粉嫩av一区二区三区在线播放 | 久久99精品久久久久久国产越南| 色八戒一区二区三区| 国产精品国产三级国产aⅴ原创 | 九色综合狠狠综合久久| 欧美日韩精品福利| 亚洲国产精品影院| 欧美视频一区二区| 香港成人在线视频| 欧美伊人精品成人久久综合97| 自拍偷拍欧美精品| 91久久精品国产91性色tv| 亚洲精品亚洲人成人网在线播放| 色综合天天狠狠| 亚洲激情图片小说视频| 欧美午夜影院一区| 亚洲风情在线资源站| 91精品黄色片免费大全| 日韩国产欧美视频|