ウィジェットのサイズ調整

QWidgetの画面上での広がりかたを調節したい場合はQSizePolicyを使います。

QSizePolicyの値

QSizePolicyではウィジェットの広がりかたとしてPolicyが定義されています。

その値は次のように定義されています。

定数名説明
QSizePolicy::Fixedサイズ固定
QSizePolicy::Minimum最小サイズ以下には小さくならない。
QSizePolicy::Maximum最大サイズ以上には大きくならない
QSizePolicy::PreferredsizeHint()以内でウィジェットを拡大可能
QSizePolicy::Expanding可能な限りウィジェットを大きく表示する。setWidgetResizableがtrueになっているのが必要
QSizePolicy::MinimumExpandingsizeHint()を最小にしてウィジェットを拡大する
QSizePolicy::Ignored表示されない

使い方

例えば次のようなボタン2つが設置していあるようなレイアウトを持つウィジェットを作りました。

QWidget widget;
QVBoxLayout layout;
QPushButton * button1 = new QPushButton("Button1");
QPushButton * button2 = new QPushButton("Button2");
layout.addWidget(button1);
layout.addWidget(button2);
widget.setLayout(&layout);
widget.show();

このままで表示すると次の画像のように2つのボタンが等間隔で並んだウィジェットが表示されます。

2つのボタンを持つレイアウト

ここで2つめのボタンだけ画面いっぱいに表示したい場合は

button2->setSizePolicy(
	QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));

このようなQSizePolicyを2つめのボタンに設定します。

見た目はこんな感じになります。

2つめのボタンだけ広がっているレイアウト

ちなみにQWidgetsetVisibleはウィジェットを表示するかしないかだけを指定するだけで、レイアウトには影響しないので注意です。

以上、QSizePolicyを使ったウィジェットの見え方の調整方法でした。

では、また!

関連項目