2016-01-30 107 views
0

我想從QSplitter(或QSplitter中刪除特定的Qwidget,因爲這是我最好的選擇),我創建了其中的2-3個。從QSplitter中刪除特定的QWidget

要做到這一點,我需要得到我創建的每個小部件的索引。

這是我的代碼:

class Windows(self): 
    list1 = [widget1, widget2, widget3] 
    counter = 0 
    def __init__(self): 
    #A lot of stuff in here 

    self.splitter = QSplitter(Qt.Vertical) 

    self.spliiter_2 = QSplitter(Qt.Horizontal) 
    self.splitter_2.addwidget(self.splitter) 

    def addWidget(self): 
    if counter == 1: 
     self.splitter.addWidget(Windows.list1[0]) 
     counter += 1 

    if counter == 2: 
     counter += 1 
     self.splitter.addWidget(Windows.list1[1]) 

    if counter == 3: 
     self.splitter.addWidget(Windows.list1[2]) 
     counter += 1 


    def deleteWidget(self): 
    ?????????????? 

正如你可以在上面看到,我在類中創建Windows中了QSplitter,然後我再創建一個(self.splitter_2)這裏我放第一位。

每次按下組合鍵,我都會調用addWidget方法,並且它會從list1中添加一個窗口小部件(取決於變量計數器)。

如果我想刪除第二個小部件(例如),我怎麼能做到這一點,而不刪除第一個小部件?我需要的索引,但我不知道如何得到它。

順便說一下,我已經創建了一個調用deleteWidget方法的按鈕。

我讀了關於hide()表格,但我不知道如何指定它。但是,我寧願完全刪除它。

希望你能幫助我。

+0

的[如何從了QSplitter刪除QWidgets(http://stackoverflow.com/questions/371599/how-to-remove-qwidgets-from-qsplitter) – ahmed

+0

感謝您的建議,但它是可能的複製不是重複的,因爲我要求刪除「特定」小部件。你展示的那個(我看到了這個)刪除了所有的小部件。 –

+0

首先,您需要通過索引或在孩子中搜索來獲取小部件,然後隱藏它。 – ahmed

回答

1

deleteWidget()功能看起來是這樣的:因爲根據documentation

當您隱藏()一個孩子

def deleteWidget(self, index): 
    delete_me = self.splitter.widget(index) 
    delete_me.hide() 
    delete_me.deleteLater() 

我們需要hide(),其空間將其他 間分配兒童。

+0

謝謝你的回答,並且對於遲到的回覆感到抱歉。這對我有效。再次感謝你。 –