2011-08-20 96 views
2

我有,例如,四QRadioButton小號rb1rb2rb3rb4。我設置rb1rb3檢查:分組一個QRadioButton成幾個QButtonGroups

rb1->setChecked(true); 
rb3->setChecked(true); 

而且,我有四個QButtonGroup S:bg12bg34bg13bg24,使前兩個非排他性(它們是默認情況下):

bg13->setExclusive(false); 
bg24->setExclusive(false); 

第一種情況:我補充rb1rb2bg12,並rb3rb4bg34。然後,我將所有按鈕添加到網格佈局,顯示小部件以及所有這些東西,一切按預期工作(兩個按鈕處於活動狀態,並且一行中的按鈕排除其行中的另一個按鈕)。

第二種情況:我補充rb1rb2bg12,並rb3rb4bg34。然後我將rb1rb3添加到bg13,rb2rb4bg24。現在它不像我預期的那樣工作,它們都像«免費»按鈕一樣,並且我可以選中/取消選中它們中的任何一個。那麼,我做錯了什麼?

UPD:我也有QPushButton S(所以,沒有排他性和這樣的東西)試了一下,它只是看起來像,如果按鈕已經處於QButtonGroup,我添加它做一個又一個,這不是不屬於第一個:(

我想,你可能會想知道爲什麼我會做這個奇怪的東西 - 我會解釋我想保留一對QRadioButton s的矢量,並在每一對中的按鈕必須排除在其對中的另一個(它們代表兩個異狀態),所以想在每對組按鈕的獨家QButtonGroup(在示例中一樣bg12bg34),並且還添加,例如,所有每對另一QButtonGroup(非排他的,像bg13從示例)的第一按鈕,並給它的ID。所以,我將能夠通過QButtonGroup類爲我們提供的信號和id之一處理狀態變化。也許有一個更簡單的方法?

回答

2

QAbstractButton擁有一個QButtonGroup作爲成員,因此按鈕只能屬於一個組。

但對於非排他性的組,你可以使用QSignalMapper!而非。

+0

哇,QSignalMapper正是我需要的。非常感謝! – karlicoss