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

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

?? gtk_tut-12.html

?? GTK development guide
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
<PRE>
GtkWidget* gtk_tree_item_new_with_label (gchar       *label);
</PRE>
</CODE></BLOCKQUOTE>
<P>Create a new TreeItem object, having a single GtkLabel as the sole
child. The new widget is returned as a pointer to a GtkWidget
object. NULL is returned on failure.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_select( GtkTreeItem *tree_item );
</PRE>
</CODE></BLOCKQUOTE>
<P>This function is basically a wrapper around a call to
<CODE>gtk_item_select (GTK_ITEM (tree_item))</CODE> which will emit the
select signal.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_deselect( GtkTreeItem *tree_item );
</PRE>
</CODE></BLOCKQUOTE>
<P>This function is basically a wrapper around a call to
gtk_item_deselect (GTK_ITEM (tree_item)) which will emit the deselect
signal.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_set_subtree( GtkTreeItem *tree_item,
                                GtkWidget   *subtree );
</PRE>
</CODE></BLOCKQUOTE>
<P>This function adds a subtree to tree_item, showing it if tree_item is
expanded, or hiding it if tree_item is collapsed. Again, remember that
the tree_item must have already been added to a tree for this to work.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_remove_subtree( GtkTreeItem *tree_item );
</PRE>
</CODE></BLOCKQUOTE>
<P>This removes all of tree_item's subtree's children (thus unreferencing
and destroying it, any of its children's subtrees, and so on...), then
removes the subtree itself, and hides the plus/minus sign.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_expand( GtkTreeItem *tree_item );
</PRE>
</CODE></BLOCKQUOTE>
<P>This emits the "expand" signal on tree_item, which expands it.
<P>
<BLOCKQUOTE><CODE>
<PRE>
void gtk_tree_item_collapse( GtkTreeItem *tree_item );
</PRE>
</CODE></BLOCKQUOTE>
<P>This emits the "collapse" signal on tree_item, which collapses it.
<P>
<BLOCKQUOTE><CODE>
<PRE>
GtkTreeItem *GTK_TREE_ITEM (gpointer obj)
</PRE>
</CODE></BLOCKQUOTE>
<P>Cast a generic pointer to "GtkTreeItem *".
<P>
<BLOCKQUOTE><CODE>
<PRE>
GtkTreeItemClass *GTK_TREE_ITEM_CLASS (gpointer obj)
</PRE>
</CODE></BLOCKQUOTE>
<P>Cast a generic pointer to "GtkTreeItemClass".
<P>
<BLOCKQUOTE><CODE>
<PRE>
gint GTK_IS_TREE_ITEM (gpointer obj)
</PRE>
</CODE></BLOCKQUOTE>
<P>Determine if a generic pointer refers to a "GtkTreeItem" object.
<P>
<BLOCKQUOTE><CODE>
<PRE>
GtkWidget GTK_TREE_ITEM_SUBTREE (gpointer obj)
</PRE>
</CODE></BLOCKQUOTE>
<P>Returns a tree item's subtree (<CODE>obj</CODE> should point to a
"GtkTreeItem" object).
<P>
<H2><A NAME="ss12.6">12.6 Tree Example</A>
</H2>

<P>This is somewhat like the tree example in testgtk.c, but a lot less
complete (although much better commented).  It puts up a window with a
tree, and connects all the signals for the relevant objects, so you
can see when they are emitted.
<P>
<BLOCKQUOTE><CODE>
<PRE>
/* example-start tree tree.c */

#include &lt;gtk/gtk.h>

/* for all the GtkItem:: and GtkTreeItem:: signals */
static void cb_itemsignal( GtkWidget *item,
                           gchar     *signame )
{
  gchar *name;
  GtkLabel *label;

  /* It's a Bin, so it has one child, which we know to be a
     label, so get that */
  label = GTK_LABEL (GTK_BIN (item)->child);
  /* Get the text of the label */
  gtk_label_get (label, &amp;name);
  /* Get the level of the tree which the item is in */
  g_print ("%s called for item %s->%p, level %d\n", signame, name,
           item, GTK_TREE (item->parent)->level);
}

/* Note that this is never called */
static void cb_unselect_child( GtkWidget *root_tree,
                               GtkWidget *child,
                               GtkWidget *subtree )
{
  g_print ("unselect_child called for root tree %p, subtree %p, child %p\n",
           root_tree, subtree, child);
}

/* Note that this is called every time the user clicks on an item,
   whether it is already selected or not. */
static void cb_select_child (GtkWidget *root_tree, GtkWidget *child,
                             GtkWidget *subtree)
{
  g_print ("select_child called for root tree %p, subtree %p, child %p\n",
           root_tree, subtree, child);
}

static void cb_selection_changed( GtkWidget *tree )
{
  GList *i;
  
  g_print ("selection_change called for tree %p\n", tree);
  g_print ("selected objects are:\n");

  i = GTK_TREE_SELECTION(tree);
  while (i){
    gchar *name;
    GtkLabel *label;
    GtkWidget *item;

    /* Get a GtkWidget pointer from the list node */
    item = GTK_WIDGET (i->data);
    label = GTK_LABEL (GTK_BIN (item)->child);
    gtk_label_get (label, &amp;name);
    g_print ("\t%s on level %d\n", name, GTK_TREE
             (item->parent)->level);
    i = i->next;
  }
}

int main( int   argc,
          char *argv[] )
{
  GtkWidget *window, *scrolled_win, *tree;
  static gchar *itemnames[] = {"Foo", "Bar", "Baz", "Quux",
                               "Maurice"};
  gint i;

  gtk_init (&amp;argc, &amp;argv);

  /* a generic toplevel window */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_signal_connect (GTK_OBJECT(window), "delete_event",
                      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
  gtk_container_set_border_width (GTK_CONTAINER(window), 5);

  /* A generic scrolled window */
  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
                                  GTK_POLICY_AUTOMATIC,
                                  GTK_POLICY_AUTOMATIC);
  gtk_widget_set_usize (scrolled_win, 150, 200);
  gtk_container_add (GTK_CONTAINER(window), scrolled_win);
  gtk_widget_show (scrolled_win);
  
  /* Create the root tree */
  tree = gtk_tree_new();
  g_print ("root tree is %p\n", tree);
  /* connect all GtkTree:: signals */
  gtk_signal_connect (GTK_OBJECT(tree), "select_child",
                      GTK_SIGNAL_FUNC(cb_select_child), tree);
  gtk_signal_connect (GTK_OBJECT(tree), "unselect_child",
                      GTK_SIGNAL_FUNC(cb_unselect_child), tree);
  gtk_signal_connect (GTK_OBJECT(tree), "selection_changed",
                      GTK_SIGNAL_FUNC(cb_selection_changed), tree);
  /* Add it to the scrolled window */
  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win),
                                         tree);
  /* Set the selection mode */
  gtk_tree_set_selection_mode (GTK_TREE(tree),
                               GTK_SELECTION_MULTIPLE);
  /* Show it */
  gtk_widget_show (tree);

  for (i = 0; i &lt; 5; i++){
    GtkWidget *subtree, *item;
    gint j;

    /* Create a tree item */
    item = gtk_tree_item_new_with_label (itemnames[i]);
    /* Connect all GtkItem:: and GtkTreeItem:: signals */
    gtk_signal_connect (GTK_OBJECT(item), "select",
                        GTK_SIGNAL_FUNC(cb_itemsignal), "select");
    gtk_signal_connect (GTK_OBJECT(item), "deselect",
                        GTK_SIGNAL_FUNC(cb_itemsignal), "deselect");
    gtk_signal_connect (GTK_OBJECT(item), "toggle",
                        GTK_SIGNAL_FUNC(cb_itemsignal), "toggle");
    gtk_signal_connect (GTK_OBJECT(item), "expand",
                        GTK_SIGNAL_FUNC(cb_itemsignal), "expand");
    gtk_signal_connect (GTK_OBJECT(item), "collapse",
                        GTK_SIGNAL_FUNC(cb_itemsignal), "collapse");
    /* Add it to the parent tree */
    gtk_tree_append (GTK_TREE(tree), item);
    /* Show it - this can be done at any time */
    gtk_widget_show (item);
    /* Create this item's subtree */
    subtree = gtk_tree_new();
    g_print ("-> item %s->%p, subtree %p\n", itemnames[i], item,
             subtree);

    /* This is still necessary if you want these signals to be called
       for the subtree's children.  Note that selection_change will be 
       signalled for the root tree regardless. */
    gtk_signal_connect (GTK_OBJECT(subtree), "select_child",
                        GTK_SIGNAL_FUNC(cb_select_child), subtree);
    gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child",
                        GTK_SIGNAL_FUNC(cb_unselect_child), subtree);
    /* This has absolutely no effect, because it is completely ignored 
       in subtrees */
    gtk_tree_set_selection_mode (GTK_TREE(subtree),
                                 GTK_SELECTION_SINGLE);
    /* Neither does this, but for a rather different reason - the
       view_mode and view_line values of a tree are propagated to
       subtrees when they are mapped.  So, setting it later on would
       actually have a (somewhat unpredictable) effect */
    gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM);
    /* Set this item's subtree - note that you cannot do this until
       AFTER the item has been added to its parent tree! */
    gtk_tree_item_set_subtree (GTK_TREE_ITEM(item), subtree);

    for (j = 0; j &lt; 5; j++){
      GtkWidget *subitem;

      /* Create a subtree item, in much the same way */
      subitem = gtk_tree_item_new_with_label (itemnames[j]);
      /* Connect all GtkItem:: and GtkTreeItem:: signals */
      gtk_signal_connect (GTK_OBJECT(subitem), "select",
                          GTK_SIGNAL_FUNC(cb_itemsignal), "select");
      gtk_signal_connect (GTK_OBJECT(subitem), "deselect",
                          GTK_SIGNAL_FUNC(cb_itemsignal), "deselect");
      gtk_signal_connect (GTK_OBJECT(subitem), "toggle",
                          GTK_SIGNAL_FUNC(cb_itemsignal), "toggle");
      gtk_signal_connect (GTK_OBJECT(subitem), "expand",
                          GTK_SIGNAL_FUNC(cb_itemsignal), "expand");
      gtk_signal_connect (GTK_OBJECT(subitem), "collapse",
                          GTK_SIGNAL_FUNC(cb_itemsignal), "collapse");
      g_print ("-> -> item %s->%p\n", itemnames[j], subitem);
      /* Add it to its parent tree */
      gtk_tree_append (GTK_TREE(subtree), subitem);
      /* Show it */
      gtk_widget_show (subitem);
    }
  }

  /* Show the window and loop endlessly */
  gtk_widget_show (window);
  gtk_main();
  return 0;
}
/* example-end */
</PRE>
</CODE></BLOCKQUOTE>
<P>
<HR>
<A HREF="gtk_tut-13.html">Next</A>
<A HREF="gtk_tut-11.html">Previous</A>
<A HREF="gtk_tut.html#toc12">Contents</A>
</BODY>
</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区久久悠悠色av| 日韩一二三区视频| 欧美精品18+| 亚洲国产精品ⅴa在线观看| 亚洲午夜羞羞片| 成人黄色777网| 欧美va亚洲va香蕉在线 | 国产ts人妖一区二区| 在线免费观看日本欧美| www久久久久| 视频一区欧美精品| 一本久道中文字幕精品亚洲嫩| 精品国产91乱码一区二区三区| 亚洲精品久久久久久国产精华液| 国产在线视频一区二区| 正在播放一区二区| 亚洲美女视频在线| 成人一区二区三区在线观看| 日韩精品中文字幕一区二区三区| 亚洲超碰精品一区二区| 在线中文字幕一区| 国产精品家庭影院| 国产精品亚洲第一| 久久久午夜电影| 精品一区二区三区免费播放| 日韩免费视频一区二区| 亚洲成人动漫在线观看| 欧美色图第一页| 亚洲色图一区二区| aa级大片欧美| 中文字幕一区二区三区四区不卡| 国产精品18久久久久久久久久久久| 欧美一区二区三区性视频| 丝袜诱惑亚洲看片| 欧美视频在线一区二区三区 | 成人app在线观看| 国产欧美精品区一区二区三区| 久久精品国产秦先生| 欧美成人艳星乳罩| 国产真实精品久久二三区| 久久综合色8888| 国产精品自拍在线| 国产精品毛片久久久久久| 波多野结衣亚洲| 亚洲色图视频网| 欧美色图天堂网| 男女性色大片免费观看一区二区| 欧美一级电影网站| 国产在线不卡一区| 国产精品美女久久久久久久网站| 99v久久综合狠狠综合久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品一区一区三区| 久久伊99综合婷婷久久伊| 国产91精品露脸国语对白| 亚洲三级电影网站| 欧美日韩高清一区二区不卡| 九九视频精品免费| 日韩一区在线播放| 欧美人牲a欧美精品| 国产在线播放一区三区四| 国产精品蜜臀在线观看| 91精品91久久久中77777| 青青草原综合久久大伊人精品优势| 精品日本一线二线三线不卡| 成人毛片老司机大片| 亚洲午夜精品17c| 久久久亚洲精品石原莉奈| 97久久精品人人做人人爽| 日韩电影免费在线| 国产精品不卡一区| 欧美一区二区免费观在线| 国产成人精品免费| 日韩在线一区二区| 中文字幕一区二区三区精华液| 欧美日韩精品免费| 成人精品视频一区二区三区| 亚洲成人777| 国产日本欧洲亚洲| 欧美一区二区在线看| 成人手机在线视频| 天天色图综合网| 国产精品无人区| 欧美刺激脚交jootjob| 色呦呦网站一区| 国产精品一区二区三区乱码| 肉丝袜脚交视频一区二区| 国产欧美视频一区二区| 欧美精品日韩一区| 一本久道久久综合中文字幕 | 成人精品视频.| 蜜臂av日日欢夜夜爽一区| 亚洲欧美另类小说| 久久久不卡影院| 日韩一级高清毛片| 欧美日韩综合一区| 一本色道久久综合亚洲精品按摩| 在线日韩国产精品| 国产精品亚洲一区二区三区在线 | 精品国产1区2区3区| 欧美无人高清视频在线观看| 成人午夜av在线| 韩国三级在线一区| 另类综合日韩欧美亚洲| 午夜成人在线视频| 亚洲国产人成综合网站| 亚洲美女免费在线| 亚洲欧美日韩精品久久久久| 中文字幕日韩精品一区| 亚洲国产精品高清| 国产精品五月天| 国产精品美女久久久久久久网站| 久久这里只精品最新地址| 欧美xxxxxxxxx| 日韩一二三区不卡| 精品精品国产高清a毛片牛牛| 欧美日韩精品一区视频| 欧美视频你懂的| 欧美亚洲图片小说| 欧美日韩国产免费| 欧美精品tushy高清| 91超碰这里只有精品国产| 欧美精品v国产精品v日韩精品 | 97成人超碰视| av成人老司机| 在线精品视频一区二区三四| 色婷婷av久久久久久久| 在线精品视频免费观看| 欧美日韩和欧美的一区二区| 日韩一区二区视频在线观看| 日韩免费高清视频| 欧美岛国在线观看| 久久青草欧美一区二区三区| 国产精品私人影院| 一区二区国产视频| 日本欧美一区二区三区乱码| 激情六月婷婷综合| 99久久99久久免费精品蜜臀| 欧美无乱码久久久免费午夜一区| 欧美一级在线免费| 国产偷国产偷精品高清尤物 | 中文字幕一区二区日韩精品绯色| 最新国产精品久久精品| 天堂成人免费av电影一区| 精品制服美女丁香| av一二三不卡影片| 欧美一区二区三区视频免费播放| 久久蜜桃一区二区| 亚洲女同女同女同女同女同69| 亚洲va欧美va人人爽| 国产精品456| 欧美色精品天天在线观看视频| 欧美sm极限捆绑bd| 亚洲欧美日韩国产另类专区| 麻豆成人91精品二区三区| 国产91精品一区二区麻豆亚洲| 在线观看一区二区视频| 欧美福利电影网| 国产精品剧情在线亚洲| 日韩激情视频网站| 99久久久久久| 欧美本精品男人aⅴ天堂| 亚洲同性gay激情无套| 蜜臀av性久久久久蜜臀aⅴ| 91在线国内视频| xf在线a精品一区二区视频网站| 亚洲麻豆国产自偷在线| 国产精品影音先锋| 在线观看91精品国产麻豆| ...av二区三区久久精品| 精品一区二区三区欧美| 欧美日韩在线播放三区四区| 日韩精品一区第一页| 免费一级片91| 91高清视频免费看| 久久精品这里都是精品| 免费成人av在线播放| 91精品福利视频| 国产精品久久久久7777按摩| 久久精品国产**网站演员| 欧美无砖专区一中文字| 亚洲日本电影在线| 成人免费视频app| 欧美mv日韩mv国产网站| 日韩成人午夜电影| 欧美日韩视频在线第一区| 亚洲免费观看高清完整版在线| 粉嫩av亚洲一区二区图片| 精品国产乱码久久久久久免费| 亚洲成人av一区二区| 日本精品一级二级| 亚洲美女偷拍久久| 91麻豆免费看| 亚洲视频一区二区在线| av一区二区三区| 综合欧美一区二区三区| 99精品热视频| 亚洲欧美日韩综合aⅴ视频| 99免费精品在线观看| 亚洲免费av在线|