將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