Qtのレイアウト管理システムは、ウィンドウ内のコンポーネントを自動的に配置して、スペースを効果的に使用できるようにする強力なメカニズムを提供します。QLayoutのいくつかのサブクラスは、ここではレイアウトマネージャーと呼ばれます。QWidgetのサブクラスのすべてのインスタンス(オブジェクト)は、レイアウトマネージャーを使用して、それらにある子ウィジェットを管理できます。QWidget:: setLayout()関数は、レイアウトマネージャーをウィジェットに適用できます。ウィジェットにレイアウトマネージャーを設定すると、次のタスクが完了します。
-
サブコンポーネントの配置
-
知覚ウィンドウのデフォルトサイズ
-
知覚ウィンドウの最小サイズ
-
ウィンドウサイズが変更されたときに処理する
-
コンテンツが変更されると自動的に更新されます
- サブコンポーネントのフォントサイズ、テキスト、またはその他のコンテンツは、それに応じて変更されます
- サブコンポーネントを非表示または表示する
- サブコンポーネントを削除します
QLayoutクラスは、レイアウトマネージャーの基本クラスです。QObjectクラスとQLayoutItemクラスから継承された抽象基本クラスです。QLayoutItemクラスは、QLayout操作の抽象アイテムを提供します。QLayoutとQLayoutItemはどちらも、独自のレイアウトマネージャーを設計するときに使用されます。通常、必要なサブクラスはQLayoutのいくつかのサブクラスのみです。これらはQBoxLayout(基本レイアウトマネージャー)とQStackedLayout(スタックレイアウトマネージャー)です。
基本的なレイアウトマネージャー(QBoxLayout)
基本的なレイアウトマネージャーのQBoxLayoutクラスは、サブコンポーネントを水平方向または垂直方向に1行に配置し、すべてのスペースを1行のボックスに分割してから、各コンポーネントを1つのボックスに配置します。
- QHBoxLayout(Horizontal Layout Manager)
- QVBoxLayout(垂直レイアウトマネージャー)
#include <QHBoxLayout>
QHBoxLayout *layout = new QHBoxLayout;
// 正确用法是要实例化控件对象后使用
// 向布局中添加控件
layout->addWidget(QPushButton);
layout->addWidget(QLabet);
// 设置部件间的间隔
layout->setSpacing(50);
// 设置布局管理器到边界的距离
layout->setContentsMargins(0,0,50,100);
// 将这个布局设置为this的布局
setLayout(layout);
グリッドレイアウトマネージャー(QGridLayout)
グリッドレイアウトマネージャーQGridLayoutクラスは、コンポーネントをグリッド内にレイアウトします。すべてのスペースを行と列に分割します。行と列の交点がセルを形成し、コンポーネントを特定のセルに配置します。
QGridLayout *layout = new QGridLayout;
// 添加部件,从第0行0列开始,占据1行2列
layout->addWidget(QWidget, 0,0,1,2);
setLayout(layout);
フォームレイアウトマネージャー(QFormLayout)
フォームレイアウトマネージャー(QFormLayout)クラスは、フォームの入力部分とそれに関連付けられたラベルを管理するために使用されます。