接口
GtkSelectionModel
描述 [src]
interface Gtk.SelectionModel : Gio.ListModel
GtkSelectionModel
是一种可为列表模型添加选中支持的接口。
此支持随后可被使用列表模型的小组件使用,以添加选中和取消选中各种项的功能。
GTK 提供了最常见选中模式(例如 GtkSingleSelection
)的默认实现,因此,只有在你希望详细控制选中项的处理方式时,才需要实现此接口。
GtkSelectionModel
支持每项一个布尔值,以表示项是否被选中。这可通过 gtk_selection_model_is_selected()
查询。当一个或多个项的选中状态发生更改时,该模型将通过调用 gtk_selection_model_selection_changed()
函数发出 GtkSelectionModel::selection-changed
信号。在此信号中给定的位置可能会发生选中状态更改,尽管这不一定是必需的。对于通过 GListModel::items-changed
信号添加到模型的新项是否选中,取决于该实现。
请注意,通过 GListModel::items-changed
添加的项可能已被选中,并且不会针对它们发出 GtkSelectionModel::selection-changed
。因此,为了跟踪哪些项被选中,有必要同时监听两个信号。
此外,该接口可以公开用于选中和取消选中项的功能。如果实现了这些函数,GTK 的列表小组件将允许用户选中和取消选中项。但是,GtkSelectionModel
可以自由地仅部分实现它们,甚至不实现它们。在这种情况下,小组件将不支持未实现的操作。
当由模型支持选择或取消选择时,选择函数的返回值并非指示已选择还是已取消选择。它们仅表示完全失败,例如当这种选择模式不受模型支持时。
选择可能会异步发生,因此找出某个项目何时被选择的唯一可靠方法是侦听指示选择的信号。
先决条件
为了实现 SelectionModel,您的类型必须继承自GListModel
。
接口结构
struct GtkSelectionModelInterface {
gboolean (* is_selected) (
GtkSelectionModel* model,
guint position
);
GtkBitset* (* get_selection_in_range) (
GtkSelectionModel* model,
guint position,
guint n_items
);
gboolean (* select_item) (
GtkSelectionModel* model,
guint position,
gboolean unselect_rest
);
gboolean (* unselect_item) (
GtkSelectionModel* model,
guint position
);
gboolean (* select_range) (
GtkSelectionModel* model,
guint position,
guint n_items,
gboolean unselect_rest
);
gboolean (* unselect_range) (
GtkSelectionModel* model,
guint position,
guint n_items
);
gboolean (* select_all) (
GtkSelectionModel* model
);
gboolean (* unselect_all) (
GtkSelectionModel* model
);
gboolean (* set_selection) (
GtkSelectionModel* model,
GtkBitset* selected,
GtkBitset* mask
);
}
GtkSelectionModel
接口的虚拟函数列表。无需实现任何函数,但除非实现了 GtkSelectionModel::is_selected()
,否则无法选择集合中的项目。
模型不需要实现任何函数来支持选择或取消选择项目。当然,如果模型不这样做,则意味着用户无法使用模型在列表小组件中选择或取消选择项目。
所有选择函数都会回退到 GtkSelectionModel::set_selection()
,因此仅实现该函数足以获得完全选择支持。
接口成员
is_selected |
|
返回给定位置的项目是否已选择。 |
|
get_selection_in_range |
|
返回一个位集,其中包含给定范围内当前所有已选择的项目。默认情况下,此函数将对给定范围内所有项目的 |
|
select_item |
|
选择给定位置的项目。如果已知操作将失败,则返回 |
|
unselect_item |
|
取消选择给定位置的项目。如果已知操作将失败,则返回 |
|
select_range |
|
选择给定范围的所有项目。如果该操作不受支持或已知对所有项目都将失败,则返回 |
|
unselect_range |
|
取消选择给定范围内所有项目的。如果该操作不受支持或已知对所有项目都将失败,则返回 |
|
全选 |
|
选中模型中的所有项目。如果操作不受支持或已知对于所有项目都将失败,则返回 |
|
取消全选 |
|
取消选中模型中的所有项目。如果操作不受支持或已知对于所有项目都将失败,则返回 |
|
set_selection |
|
将蒙版中所有项目的选定状态设为已选中。有关此函数的详细说明,请参见 |