12. List物件
GtkList物件被设计成是个vertical container, 而在其中的物件必须是GtkListItem.
GtkList物件有其自己的视窗用来接取事件, 而其背景色一般是白色的. 由於它是由GtkContainer而来, 您也可以用GTK_CONTAINER(List)巨集来处理. 请见GtkContainer物件一章. 您应该已经熟悉GList的用法, 及其相关函数g_list_*(), 这样您才不会在此遭遇到问题.
在GtkList物件有一栏对我们来说很重要.
|
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 信号
|
当selection区域改变的时候, 这个信号会被触发. 这会在当GtkList的子物件被select或unselect时发生.
|
当GtkList的子物件被select时, 这个信号会被触发. 这一般在gtk_list_select_item(), gtk_list_select_child(), 按钮被按下及有时间接触发或有子物件新增或移除时发生.
|
当GtkList的子物件被unselect时, 这个信号会被触发. 这一般在gtk_list_unselect_item(), gtk_list_unselect_child(), 按钮被按下及有时间接触发或有子物件新增或移除时发生.
12.2 函数
|
返回`GtkList' type identifier.
|
产生新的`GtkList' object. 新的物件其返回值为`GtkWidget' object的指标. `NULL'表示失败.
|
插入list items到LIST里面, 由POSITION开始. ITEMS是双向链结串列. 每个项目要指向一个产生出来的GtkListItem.
|
就像gtk_list_insert_items()一样插入ITEMS到LIST後面.
|
就如gtk_list_insert_items()一样插入ITEMS到LIST前面.
|
从LIST中移除list items. ITEMS是双向链结串列, 每个node要指向child. 设计者要自行呼叫g_list_free(ITEMS). 设计者也要自行处理掉list items.
|
从LIST中移除并销毁list items.
|
透过在LIST中目前的位置,触发GtkList::select_child信号给指定的list item.
|
透过在LIST中目前的位置,触发GtkList::unselect_child信号给指定的list item.
|
推荐文章
精彩文章
|