Удалить определенный 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() потому что согласно документации

Когда вы прячете () дочерний элемент, его пространство будет распределено среди остальных дочерних элементов.

Другие вопросы по тегам