1

QWidgetレイアウトが垂直である があるとします。このレイアウトには、ボタン (bt1) と別のレイアウト ( hLayout) があります。

このアプリは、bt1 をクリックして からボタンを追加/削除するように動作しますhLayout

ボタンが初めて追加されると、新しいボタンを保持するためにウィンドウが大きくなります (幅が大きくなります)。次にクリックすると、ボタンが非表示になります。ただし、ボタンを非表示にしても、ウィンドウは縮小されません。ボタンを追加する前と同じサイズにしたいです。

ボタンが削除されたときにウィンドウを適切に縮小する方法は何ですか? または、より一般的には、ウィンドウを十分なサイズにするためのアプローチは何ですか?

4

2 に答える 2

0

widget->resize(widget->minimumSize())からボタンを削除した後、呼び出すだけhLayoutです。

于 2015-11-30T21:45:50.147 に答える
0

resize を使用して明示的なサイズ調整を行うことで、考えられるすべてのイベントをカバーすることを意味する限り、ウィジェットを適切に自動的にサイズ変更するためのより軽量でスマートなアプローチがあります。QWidget::setSizePolicyQSizePolicyを見てください。

あなたのような状況では、私はよく使用します:

// your specific code and size policy *may* differ
widget->setMinimumSize(width, height);
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

そのような場合や多くの場合に特定のサイズにサイズ変更するためにイベントハンドラーを妨害しないでください。

于 2015-12-01T04:18:12.633 に答える