亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
麻豆国产精品视频| 久久午夜色播影院免费高清| 欧美日韩一级视频| 日韩一区在线看| 中文字幕在线一区免费| 久久99热这里只有精品| 一区二区三区中文字幕精品精品| 日韩美一区二区三区| 日本精品一级二级| 福利视频网站一区二区三区| 日韩经典中文字幕一区| 亚洲少妇屁股交4| 久久久久久久久一| 欧美一级免费大片| 91国在线观看| 99久久婷婷国产综合精品| 狠狠色丁香婷婷综合| 午夜欧美视频在线观看| 中文字幕一区日韩精品欧美| 欧美刺激脚交jootjob| 欧美视频一区在线观看| 色妞www精品视频| fc2成人免费人成在线观看播放| 麻豆成人91精品二区三区| 亚洲五码中文字幕| 亚洲精品免费视频| 亚洲男人的天堂在线观看| 久久精品亚洲麻豆av一区二区| 日韩免费观看高清完整版在线观看| 欧美视频三区在线播放| 一本到高清视频免费精品| 成人综合婷婷国产精品久久蜜臀 | www.99精品| 国产精品一区二区三区乱码| 久久国产综合精品| 麻豆精品国产91久久久久久 | 丁香六月综合激情| 国产成人aaa| 成人黄色在线看| 成人深夜视频在线观看| 成人久久久精品乱码一区二区三区| 国产成人啪午夜精品网站男同| 国产主播一区二区| 国产老肥熟一区二区三区| 国产福利精品一区二区| 成人影视亚洲图片在线| 成人黄色av电影| 一本一道综合狠狠老| 在线精品视频一区二区| 欧美日韩免费高清一区色橹橹| 在线不卡免费欧美| 欧美成人在线直播| 欧美国产禁国产网站cc| 亚洲欧美日韩国产一区二区三区| 亚洲欧美日韩小说| 日韩黄色一级片| 国产曰批免费观看久久久| 国产一区久久久| 99久久er热在这里只有精品66| 欧美在线一区二区| 欧美一区二区大片| 久久久久久一二三区| 国产精品美女久久久久久久| 亚洲欧美国产77777| 亚洲18色成人| 极品少妇一区二区| jizz一区二区| 在线电影国产精品| 久久久久国产免费免费| 亚洲欧洲99久久| 五月激情六月综合| 国产精品一区二区在线观看网站| 成人精品免费网站| 欧美三日本三级三级在线播放| 日韩欧美精品在线视频| 成人免费小视频| 日本成人在线看| www.日韩在线| 欧美一区二区视频在线观看2020| 国产女主播视频一区二区| 尤物在线观看一区| 国产在线看一区| 色乱码一区二区三区88| wwww国产精品欧美| 樱桃国产成人精品视频| 久久99国产乱子伦精品免费| 色综合色综合色综合色综合色综合 | 亚洲精品免费在线播放| 精品一区二区成人精品| 色8久久精品久久久久久蜜| 精品久久国产老人久久综合| 一区二区在线观看免费| 国产一区中文字幕| 在线不卡的av| 一区二区三区四区亚洲| 国产精品99久久久久久似苏梦涵 | 欧美电影免费提供在线观看| 国产精品家庭影院| 国产综合一区二区| 精品视频在线看| 国产精品初高中害羞小美女文| 男男视频亚洲欧美| 欧美性生活久久| 亚洲色图在线看| 国产成人福利片| 日韩女优电影在线观看| 亚洲综合色噜噜狠狠| 9i看片成人免费高清| 2022国产精品视频| 日本中文在线一区| 欧美理论电影在线| ㊣最新国产の精品bt伙计久久| 韩国午夜理伦三级不卡影院| 欧美一区二区三区思思人| 亚洲影院在线观看| 色欧美乱欧美15图片| 亚洲视频网在线直播| 懂色中文一区二区在线播放| 精品乱人伦一区二区三区| 婷婷丁香久久五月婷婷| 欧美三级在线看| 亚洲一区二区欧美日韩| 色就色 综合激情| 一区二区三区四区不卡在线| 波波电影院一区二区三区| 久久久91精品国产一区二区三区| 久久国产免费看| 日韩欧美的一区二区| 日韩 欧美一区二区三区| 777久久久精品| 日本不卡在线视频| 欧美一区二区在线视频| 日本欧美韩国一区三区| 日韩西西人体444www| 久久精品久久精品| 欧美精品一区在线观看| 国产精品一区2区| 国产精品久久久久一区二区三区共| 国产精品伊人色| 国产精品免费视频观看| av动漫一区二区| 亚洲免费高清视频在线| 欧美性xxxxx极品少妇| 丝袜诱惑制服诱惑色一区在线观看 | 精品国产乱码久久久久久久久| 老司机精品视频线观看86| 欧美大白屁股肥臀xxxxxx| 国产乱码一区二区三区| 国产精品理伦片| 欧美在线免费视屏| 蜜臀久久久99精品久久久久久| 久久日一线二线三线suv| 国产一区二区三区香蕉| 国产精品免费视频一区| 色婷婷国产精品久久包臀| 午夜视频在线观看一区二区三区| 在线视频你懂得一区| 蜜桃久久久久久| 欧美国产成人精品| 欧美性猛交xxxx乱大交退制版| 日韩精彩视频在线观看| www国产亚洲精品久久麻豆| 99久久婷婷国产综合精品| 亚洲大型综合色站| 欧美精品一区男女天堂| 91农村精品一区二区在线| 午夜视频在线观看一区| 国产三级一区二区| 97se亚洲国产综合自在线| 午夜精品久久久久久| 久久婷婷综合激情| 欧美亚洲国产一区二区三区va| 蜜臀久久久99精品久久久久久| 国产精品嫩草99a| 777xxx欧美| 99久久综合国产精品| 日日夜夜精品视频免费| 日本一区二区久久| 欧美精品三级在线观看| 丁香天五香天堂综合| 午夜视黄欧洲亚洲| 国产精品久久久久永久免费观看| 欧美日本精品一区二区三区| 国产成人在线观看| 亚洲成人在线免费| 国产片一区二区三区| 在线电影欧美成精品| av中文字幕一区| 精品一区二区日韩| 亚洲香蕉伊在人在线观| 国产精品网站在线| 欧美大片在线观看一区二区| 91精彩视频在线观看| 国产乱码字幕精品高清av | 粉嫩嫩av羞羞动漫久久久 | 久热成人在线视频| 亚洲一区二区三区中文字幕在线 | 自拍偷拍国产亚洲| 精品国精品自拍自在线| 91.com在线观看|