8

他のウィジェットとレイアウトを含む名前付きのQWidgetとがあります。次のようなレイアウトとして設定されます。QLayoutgeneral_layoutgeneral_layoutQWidget

setLayout(general_layout)

次に、の内容を変更する必要がありQWidgetます。どうやってやるの?の新しいレイアウトを削除して作成しようとしましたがQWidget、その新しいレイアウトセットをのレイアウトとして設定しましたQWidgetが、意図を正常に完了できませんでした。

これは私のコードです:

delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
4

1 に答える 1

15

問題は、レイアウトを削除するときにレイアウトのウィジェットが破棄されないことです。これにより、レイアウトがなくても、myQWidgetのすべての子ウィジェットが引き続き存在します。

解決策は簡単です:追加します

qDeleteAll(myQWidget->children());

delete general_layout;
于 2010-06-07T15:21:05.393 に答える