0

QVBoxLayout実行時に作成したQWidgetオブジェクトを動的に入力します。実行時にそれらも削除したいのですが、どうすればよいですか?

ウィジェットを 1 つずつ削除できます。

void QLayout::removeWidget(QWidget * widget)

どういうわけかレイアウトを繰り返すことはできますか?

4

2 に答える 2

2

格納されたウィジェットのcount数を返すitemAt()メソッドと、インデックスを指定すると、相対的な格納されたウィジェットへのポインターを返すメソッドがあります。すべてのポインタを取得してから削除できます。最初にすべてのポインターを取得する必要があります。これは、カウント中にポインターを 1 つ削除すると、格納されているウィジェットの数が反復中に変化するためです。

itemAt()ウィジェット自体を取得するメソッドを使用して取得しますQLayoutItemwidget

while (layout->count() != 0) {
  QLayoutItem *item = layout->itemAt(0);
  layout->removeWidget(item->widget());
}
于 2015-09-01T14:20:30.243 に答える