2016-01-30 172 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

谢谢你的回答,并且对于迟到的回复感到抱歉。这对我有效。再次感谢你。 –