从 QSplitter 中删除特定的 QWidget

Remove a specific QWidget from a QSplitter

我想在创建其中的 2-3 个之后从 QSplitter 中删除特定的 Qwidget(或者 QSplitter 这是我的最佳选择)。

为此,我需要获取我创建的每个小部件的索引。

这是我的代码:

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):
    ?????????????? 

正如你在上面看到的,我在 class Windows 中创建了一个 QSplitter,然后我创建了另一个 (self.splitter_2),我把第一个放到了那里。

每次我按下组合键时,我都会调用 addWidget 方法,它会从 list1 添加一个小部件(取决于变量计数器)。

如果我想删除第二个小部件(例如),我该怎么做,而不删除第一个小部件?。我想我需要索引,但我不知道如何获取它。

顺便说一句,我创建了一个调用 deleteWidget 方法的按钮。

我读到了 hide() 表格,但我不知道如何指定它。但是,我宁愿完全删除它。

希望你能帮助我。

您的 deleteWidget() 函数可能如下所示:

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

我们需要 hide() 因为根据 documentation

When you hide() a child, its space will be distributed among the other children.