2014-01-07 29 views
3

是否可以從運行UI的時刻禁用複選框?打開UI時禁用複選框

我在我的用戶界面中有兩個步驟。我希望步驟2的複選框保持未選中狀態,直到選擇第一步中的方框。

這可能嗎?我無法弄清楚如何用信號/插槽來做到這一點。

在下面的圖片中,我希望步驟2被禁用,直到點擊步驟2中的方框。

enter image description here

回答

2

要默認在Qt Designer中禁用複選框,設置相應啓用屬性(它在QWidget的部分的頂部)。

爲了管理複選框的狀態,我會建議增加各組複選框到QButtonGroup(這可能會在__init__來完成你的主窗口類):

self.group1 = QtGui.QButtonGroup(self) 
    self.group1.setExclusive(False) 
    self.group1.addButton(self.checkboxA) 
    self.group1.addButton(self.checkboxB) 
    self.group1.addButton(self.checkboxC) 
    self.group1.buttonClicked.connect(self.handleStepOneButtons) 

    # self.group2 = QtGui.QButtonGroup(self) 
    # ... 
    # self.group2.buttonClicked.connect(self.handleStepTwoButtons) 

然後是處理程序的第1步複選框可以控制第2步複選框的狀態,如下所示:

def handleStepOneButtons(self, button): 
    checked = (self.group1.checkedButton() is not None) 
    for checkbox in self.group2.buttons(): 
     checkbox.setEnabled(checked) 
+0

謝謝,很好的答案。還有一種方法可以隱藏文本框嗎?即我有一個'?'按鈕,點擊時應顯示帶有信息的文本。啓用Unclicking功能只會將盒子灰色,因爲我想將其完全隱藏起來。如果需要 – user2761786

+0

@ user2761786,我總是可以將此置於另一個問題中。請發佈一個新問題。 – ekhumoro