【发布时间】:2015-09-03 22:40:20
【问题描述】:
当将 Gtk# RadioButton class 的实例添加到 GUI 时,它会被自动选中(“激活”)作为其单选按钮组的第一个成员。
对于Gtk,这已经在一定程度上讨论过in another question,the selected answer 的主要观点是用户希望始终选择一个单选按钮强>。
我对此没有异议。
但是,我会自动生成我的用户界面,因此每个单选按钮都链接到一个数据模型,但是 任何单选按钮都不能在任何时候获得对其他任何@的引用987654331@ 个实例。数据模型确保始终选中一个单选按钮。
除了足以满足用户期望之外,我认为这是一种很好的做法,因为这样,数据模型而不是 GUI 来确保数据完整性。
不幸的是,Gtk# 会像这样自动检查所有单选按钮,因为它认为每个单选按钮都是其组中的第一个。为了将各种单选按钮添加到同一个组,我必须将组中的第一个单选按钮传递给其他单选按钮的构造函数 - 正如上面所指出的,我不能这样做,因为我没有任何办法得到实例化其他单选按钮时对第一个单选按钮的引用。
将单选按钮的Active property 设置为false 无济于事,调用Toggle method 也无济于事。
有没有办法抑制这种自动选择,可能是通过子类化和覆盖我还找不到的东西?或者,是否有可能为此目的强制 CheckButton 看起来像一个单选按钮?
如果真的没有其他解决方案,我将尝试实施another answer 中建议的解决方案,该解决方案涉及为我的每个单选按钮添加第二个隐藏单选按钮,但我会发现这对于生产代码非常麻烦。
【问题讨论】:
-
为什么你不能直接循环单选按钮并取消选中它们?使用继承自 GtkToggleButton 的 gtk_toggle_button_set_active()....
-
@ymz:因为按钮似乎不接受该值。他们确保每组至少有一个按钮保持选中状态。
-
我通常不会建议这个(作为官方文档)但是...... gtk_toggle_button_toggled 可能会成功
-
@ymz:嗯,
RadioButton有一个Toggle()method,这似乎是一回事,但它不会产生任何可见的结果。RadioButton可能会自动重新建立其状态。 -
如果您仅在创建 UI 之后创建该组,它对您有用吗?您可以观察您的 UI 并获得该单选按钮。现在,我没有 gtk# 经验,所以这只是一个建议。
标签: radio-button gtk#