質問

私たちが持っていると考えてみましょう QWidget そしてa QLayout 名前が付けられました general_layout 他のウィジェットとレイアウトが含まれています。 general_layout として設定されています QWidget このようなレイアウト:

setLayout(general_layout)

今、私はのコンテンツを変更する必要があります QWidget. 。どうやってやるの?私は削除して新しいレイアウトを作成しようとしました QWidget そして、その新しいレイアウトはのレイアウトとして設定されました QWidget, 、しかし、私の意図を正常に完了することができませんでした。

これは私のコードです:

delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
役に立ちましたか?

解決

問題は、レイアウトの削除時にレイアウトのウィジェットが破壊されないことです。これにより、レイアウトがなくても、MyQwidgetのすべての子供ウィジェットがまだ存在しています。

解決策は単純です:aを追加します

qDeleteAll(myQWidget->children());

delete general_layout;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top