将Gtk#RadioButton
class的实例添加到GUI时,它会作为其单选按钮组的第一个成员自动选中(“激活”)。如何防止单选按钮的自动选择
对于基于GTK,这已被讨论在某种程度上in another question,随着the selected answer要点在于用户希望一个单选按钮,以在所有时间来选择。
我不反对。
不过,我会自动生成我的用户界面的方式,使每个单选按钮链接到一个数据模型,但没有一个单选按钮可以在任何时候,得到一个参考任何其他RadioButton
的实例。数据模型确保一直检查一个单选按钮。
除了足以匹配用户的期望外,我认为这是一种很好的做法,像这样,数据完整性由数据模型确保,而不是由GUI确保。
不幸的是,Gtk#会自动检查全部这样的单选按钮,因为它认为每个单选按钮是其组中的第一个单选按钮。为了将各种单选按钮添加到同一组中,我必须将组中的第一个单选按钮传递给其他单选按钮的构造函数 - 我不能像上面指出的那样,因为我没有办法获取实例化其他人时对第一个单选按钮的引用。
将单选按钮的Active
property设置为false
没有帮助,也没有调用Toggle
method。
是否有任何方法来抑制这种自动选择,可能是通过继承和覆盖我找不到的东西呢?或者,是否可以强制CheckButton
看起来像一个单选按钮来达到这个目的?
如果真的是有没有其他解决办法,我会尝试和实施该解决方案在another answer这涉及添加第二个隐藏的单选按钮,我的每个单选按钮的建议,但我会找到的生产代码,非常哈克。
为什么你不能只是循环单选按钮和**取消选中**全部?使用继承自GtkToggleButton的gtk_toggle_button_set_active().... – ymz
@ymz:因为按钮似乎不接受该值。他们确保每组至少有一个按钮保持被检查。 –
我通常不会建议这个(作为官方文档),但...gtk_toggle_button_toggled可能会诀窍 – ymz