首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QSplitter中删除Widget

从QSplitter中删除Widget
EN

Stack Overflow用户
提问于 2013-12-02 12:31:14
回答 1查看 1.6K关注 0票数 0

很久以前,有人也问过同样的问题。How to remove...

这就是答案:

当你隐藏()一个孩子时,它的空间将被分配给其他的孩子。当您再次显示它时,它将被恢复。

我尝试过QSplitter::hide()show()update()函数以及delete。什么都没用。

代码语言:javascript
复制
//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

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

有什么主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 12:49:47

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

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20328437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档