2

2〜3個作成した後、特定QwidgetのものをQSplitter(またはそれが最良の選択です)から削除したいと思います。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):
    ?????????????? 

上記のように、Windows クラスに QSplitter を作成し、最初の QSplitter を配置した場所に別の QSplitter を作成します ( self.splitter_2)。

キーの組み合わせを押すたびに、addWidgetメソッドを呼び出し、list1 から (変数カウンターに依存する) ウィジェットを追加します。

2 番目のウィジェット (たとえば) を削除したい場合、最初のウィジェットを削除せずに、どうすれば削除できますか? インデックスが必要だと思いますが、取得方法がわかりません。

deleteWidgetちなみに、メソッドを呼び出すボタンを作成しました。

フォームについて読みましたhide()が、指定方法がわかりません。しかし、私はむしろそれを完全に削除したいと思います。

あなたが私を助けてくれることを願っています。

4

1 に答える 1

3

関数deleteWidget()は次のようになります。

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

ドキュメントhide()によると、必要なため

子を hide() すると、そのスペースが他の子に分配されます。

于 2016-01-30T21:12:47.733 に答える