如何将 GtkBox 绑定到数组?

问题描述 投票:0回答:1

我正在制作一些 GTK 桌面小部件,用于监视系统托盘元素或任务栏打开的窗口等内容。

对于任务栏,我采取的方法是每次从窗口管理器收到“更改”信号时重新填充 Gtk.Box:我从 GtkBox 中删除所有内容,然后根据查询重新添加所有内容我在状态更改后对窗口管理器执行操作。这样我就不用担心点单或者错过信号了。

但是,我想知道是否有办法将

Gtk.Box
绑定到数组,以便它自行处理更改。
FlowBox
有一个
bind_model
方法似乎适合我的用例,但是
FlowBox
似乎也比简单的
Box
更复杂:
Box
(或
Container
,或
Widget
)不提供类似的机制?

gtk3 gjs
1个回答
0
投票

GtkBox
不支持这样的功能,因为它旨在成为一个简单的容器小部件。

GtkListBox
GtkFlowBox
这样的小部件通过支持绑定到
GListModel
来实现。但小部件和列表模型都没有运行任何复杂的逻辑;列表模型跟踪成员的位置和数量,发出
items-changed
信号。
GtkListBox
GtkFlowBox
跟踪成员小部件,并对信号做出响应。

如果您担心性能,您应该只为您的用例实现

GListModel
并将其绑定到
GtkListBox
GtkFlowBox
。然后,您可以使用
items-changed
position
removed
参数发出
added
,以仅反映真实的更改。

© www.soinside.com 2019 - 2024. All rights reserved.