Удалить определенный QWidget из QSplitter
Я хочу удалить конкретный Qwidget
из QSplitter
(илиQSplitter
это лучший выбор, который у меня есть) после того, как я создам 2-3 из них.
Для этого мне нужно получить индекс каждого виджета, который я создаю.
Это мой код:
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):
??????????????
Как вы можете видеть выше, я создаю QSplitter в классе Windows, а затем я создаю еще один (self.splitter_2
) где я положил первый.
Каждый раз, когда я нажимаю комбинацию клавиш, я вызываю addWidget
метод, и он добавляет виджет (который зависит от счетчика переменных) из списка1.
Если я хочу удалить 2-й виджет (например), как я могу это сделать, не удаляя первый виджет?. Мне кажется, что мне нужен индекс, но я не знаю, как его получить.
Я создал кнопку, которая вызывает deleteWidget
метод, кстати.
Я читал о hide()
форма, но я не знаю, как это указать. Но я бы предпочел полностью его удалить.
Надеюсь, ты сможешь мне помочь.
1 ответ
Ваш deleteWidget()
функция может выглядеть так:
def deleteWidget(self, index):
delete_me = self.splitter.widget(index)
delete_me.hide()
delete_me.deleteLater()
Нам нужно hide()
потому что согласно документации
Когда вы прячете () дочерний элемент, его пространство будет распределено среди остальных дочерних элементов.