在 Gtk 中,如何在具有多个 CellRenderer 的 TreeViewColumn 中制作 CellRendererToggle 仅在单击复选框本身时才切换?

发布于 2024-08-23 13:32:55 字数 603 浏览 12 评论 0原文

我有一个代表 Tag 树的 TreeModel。每个 Tag 都有这些 属性等:

string Name
bool Active
Tag Parent
TagList Children //basically just a List<Tag>

TreeView 有一个列,有两个 CellRendererCellRendererToggle 表示 ActiveCellRendererText 表示 Name。我想 它们在同一列中,因为多列会变得混乱 进一步了解 TreeView 中的后代。

我的问题是,当我单击列中的任意位置时, CellRendererToggle 已切换。这是有问题的,因为我想 执行诸如拖动标签并内联重命名之类的操作。有没有 有什么办法可以让 CellRendererToggle 在我点击时切换 在复选框本身上,而不将其移动到单独的列?

I have a TreeModel representing a tree of Tags. Each Tag has these
properties, among others:

string Name
bool Active
Tag Parent
TagList Children //basically just a List<Tag>

The TreeView has a single column, with two CellRenderers: a
CellRendererToggle for Active, and a CellRendererText for Name. I want
them in the same column, because multiple columns gets messy as you
get farther down the descendants in the TreeView.

My problem is that when I click anywhere in the column, the
CellRendererToggle is toggled. This is problematic, because I want to
do things like dragging the tags, and renaming them inline. Is there
any way to make the CellRendererToggle only get toggled when I click
on the checkbox itself, without moving it to a separate column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离旧人 2024-08-30 13:32:55

您需要将CellRendererMode设置为Activatable

renderer.Mode = CellRendererMode.Activatable;

如果一个渲染器不可激活,但列中的另一个渲染器可以激活,则Gtk会通过单击该渲染器。将非切换渲染器设置为可激活也可以防止它们传递点击。

You need to set the CellRenderer's Mode to Activatable:

renderer.Mode = CellRendererMode.Activatable;

If a renderer is not activatable, but another renderer in the column is, Gtk passes on the click to that renderer. Setting your non-toggle renderers to be activatable, too, keeps them from passing on the click.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文