0

昔、誰かが同じ質問をしました。取り外し方...

これが答えでした:

子を hide() すると、そのスペースが他の子に分配されます。再度 show() すると元に戻ります。

、、関数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 に答える