Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

GTK入门导引

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  12. List物件

  GtkList物件被设计成是个vertical container, 而在其中的物件必须是GtkListItem.

  GtkList物件有其自己的视窗用来接取事件, 而其背景色一般是白色的. 由於它是由GtkContainer而来, 您也可以用GTK_CONTAINER(List)巨集来处理. 请见GtkContainer物件一章. 您应该已经熟悉GList的用法, 及其相关函数g_list_*(), 这样您才不会在此遭遇到问题.

  在GtkList物件有一栏对我们来说很重要.


struct _GtkList
{
[...]
GList *selection;
guint selection_mode;
[...]
}; 

  GtkList的selection栏指向一个所有items的link list, 其中记录所有被记录的项目, 若为`NULL'则selection为空的. 因此要知道目前的selection, 我们可以读取GTK_LIST()->selection一栏. 但不要修改它们, 因为它们是由内部所维护.

  GtkList的selection_mode决定selection的机制, 而GTK_LIST()->selection栏的内容为:

  selection_mode可以是以下其中一种:

  GTK_SELECTION_SINGLE selection可以是`NULL' 或对一个已选项目, 包含一个GList* pointer.

  GTK_SELECTION_BROWSE 若list没有有效的物件, selection可以是`NULL' 否则它会包含一个GList* pointer, 而且就是一个list item.

  GTK_SELECTION_MULTIPLE 若list中没有item被选取, selection可以是`NULL' 否则会有一个GList* pointer, 并且指向第一个selected item. 并一直向後接到第二个...

  GTK_SELECTION_EXTENDED selection永远为`NULL'.

  内定为GTK_SELECTION_MULTIPLE.

  12.1 信号


void GtkList::selection_changed (GtkList *LIST)

  当selection区域改变的时候, 这个信号会被触发. 这会在当GtkList的子物件被select或unselect时发生.


void GtkList::select_child (GtkList *LIST, GtkWidget *CHILD)

  当GtkList的子物件被select时, 这个信号会被触发. 这一般在gtk_list_select_item(), gtk_list_select_child(), 按钮被按下及有时间接触发或有子物件新增或移除时发生.


void GtkList::unselect_child (GtkList *LIST, GtkWidget *CHILD)

  当GtkList的子物件被unselect时, 这个信号会被触发. 这一般在gtk_list_unselect_item(), gtk_list_unselect_child(), 按钮被按下及有时间接触发或有子物件新增或移除时发生.

  12.2 函数


guint gtk_list_get_type (void)

  返回`GtkList' type identifier.


GtkWidget* gtk_list_new (void)

  产生新的`GtkList' object. 新的物件其返回值为`GtkWidget' object的指标. `NULL'表示失败.


void gtk_list_insert_items (GtkList *LIST, GList *ITEMS, gint POSITION)

  插入list items到LIST里面, 由POSITION开始. ITEMS是双向链结串列. 每个项目要指向一个产生出来的GtkListItem.


void gtk_list_append_items (GtkList *LIST, GList *ITEMS)

  就像gtk_list_insert_items()一样插入ITEMS到LIST後面.


void gtk_list_prepend_items (GtkList *LIST, GList *ITEMS)

  就如gtk_list_insert_items()一样插入ITEMS到LIST前面.


void gtk_list_remove_items (GtkList *LIST, GList *ITEMS)

  从LIST中移除list items. ITEMS是双向链结串列, 每个node要指向child. 设计者要自行呼叫g_list_free(ITEMS). 设计者也要自行处理掉list items.


void gtk_list_clear_items (GtkList *LIST, gint START, gint END)

  从LIST中移除并销毁list items.


void gtk_list_select_item (GtkList *LIST, gint ITEM)

  透过在LIST中目前的位置,触发GtkList::select_child信号给指定的list item.


void gtk_list_unselect_item (GtkList *LIST, gint ITEM)

  透过在LIST中目前的位置,触发GtkList::unselect_child信号给指定的list item.



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 1415 16 17 18 19 20 21 22 23 24 25 26 27 28 下一页


上一篇:GTK+/Gnome应用开发   下一篇:GTK v1.2 Tutorial(英文)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·Motorola微处理器bootloader分析与应用
·Fedora Core5 NFS服务器搭建过程介绍
·Linux系统:让内存不再泄漏的实用技巧
·新手看招 手把手教你安装VMware虚拟机
·“侵权事件” 红帽称微软企图干扰用户
·删除Linux后 如何找回Windows启动菜单
·菜鸟乐园 Linux中常见文件系统格式介绍
·Linux操作系统下IPTables配置方法详解
·实用技巧 Linux系统的经典使用技巧八则
·Linux系统文件优化及磁盘检查方法介绍
Power by linux-cn.com 粤ICP备05006655号