簡體   English   中英

從QSplitter刪除小部件

[英]Remove Widget from QSplitter

很久以前,有人問過同樣的問題。 如何刪除...

這是答案:

當您隱藏()一個孩子時,其空間將在其他孩子之間分配。 當您再次顯示它時,它將恢復。

我已經嘗試了QSplitter::hide()show()update()函數,還delete 沒事。

//class.cpp

void PlainView::addComponent(QWidget *widget)
{
  qDebug() << _splitOne->widget(1);

  //delete current widget on index 1
  delete _splitOne->widget(1);
  //add new widget on index 1
  _splitOne->addWidget(widget);

  qDebug() << _splitOne->widget(1);
}

//output
QObject(0x0)  
QTextEdit(0xa0f580

第一個窗口小部件已刪除,新的窗口小部件已添加。 但是我看不到新的小部件。

有人知道嗎?

不要使用delete而是使用deleteLater() ,您需要先刪除舊的小部件:

void PlainView::addComponent(QWidget *widget)
{
  qDebug() << _splitOne->widget(1);
  QWidget *old = _splitOne->widget(1);

  // deparenting removes the widget from the gui
  old->setParent(0);
  //delete current widget on index 1
  old->deleteLater()

  //add new widget on index 1
  _splitOne->insertWidget(1,widget);
  widget->show();

  qDebug() << _splitOne->widget(1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM