0

很久以前,有人问过同样的问题。如何去除...

这是答案:

当你 hide() 一个孩子时,它的空间将分布在其他孩子之间。当您再次显示()时,它将恢复。

我已经尝试过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

第一个小部件被删除并添加了新的小部件。但我看不到新的小部件。

有人有想法吗?

4

1 回答 1

0

不要使用 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);
}
于 2013-12-02T12:49:47.560 回答