QGraphicsLinearLayout Class
QGraphicsLinearLayout クラスは、Graphics View 内のウィジェットを管理するための水平または垂直のレイアウトを提供します。詳細...
| ヘッダー: | #include <QGraphicsLinearLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QGraphicsLayout |
パブリック関数
| QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr) | |
| QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr) | |
| virtual | ~QGraphicsLinearLayout() |
| void | addItem(QGraphicsLayoutItem *item) |
| void | addStretch(int stretch = 1) |
| Qt::Alignment | alignment(QGraphicsLayoutItem *item) const |
| void | insertItem(int index, QGraphicsLayoutItem *item) |
| void | insertStretch(int index, int stretch = 1) |
| qreal | itemSpacing(int index) const |
| Qt::Orientation | orientation() const |
| void | removeItem(QGraphicsLayoutItem *item) |
| void | setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) |
| void | setItemSpacing(int index, qreal spacing) |
| void | setOrientation(Qt::Orientation orientation) |
| void | setSpacing(qreal spacing) |
| void | setStretchFactor(QGraphicsLayoutItem *item, int stretch) |
| qreal | spacing() const |
| int | stretchFactor(QGraphicsLayoutItem *item) const |
再実装されたパブリック関数
| virtual int | count() const override |
| virtual void | invalidate() override |
| virtual QGraphicsLayoutItem * | itemAt(int index) const override |
| virtual void | removeAt(int index) override |
| virtual void | setGeometry(const QRectF &rect) override |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override |
詳細な説明
線形レイアウトのデフォルトの向きはQt::Horizontal です。垂直方向の向きを選択するには、setOrientation()を呼び出すか、QGraphicsLinearLayoutのコンストラクタにQt::Vertical を渡します。
QGraphicsLinearLayout を使用する最も一般的な方法は、ヒープ上にオブジェクトを構築し、コンストラクタに親ウィジェットを渡してから、addItem() を呼び出してウィジェットやレイアウトを追加することです。
QGraphicsScene scene;
QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
QGraphicsWidget *pushButton = scene.addWidget(new QPushButton);
QGraphicsWidget *form = new QGraphicsWidget;
scene.addItem(form);
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(form);
layout->addItem(textEdit);
layout->addItem(pushButton);あるいは、レイアウトのコンストラクタに親ウィジェットを渡さない場合は、QGraphicsWidget::setLayout() を呼び出してこのレイアウトをそのウィジェットのトップレベルレイアウトとして設定する必要があります。そうすることで、そのウィジェットがレイアウトの所有権を取得します。
リニアレイアウトには、ウィジェット、レイアウト、ストレッチ(addStretch()、insertStretch()、またはsetStretchFactor())、およびスペーシング(setItemSpacing())を追加できます。 レイアウトはアイテムの所有権を取得します。レイアウトアイテムがQGraphicsItem を継承している場合(QGraphicsWidget など)、そのレイアウトアイテムは2つの所有権階層に属することになるため、所有権の曖昧さが生じることがあります。 この処理方法については、QGraphicsLayoutItem::setOwnedByLayout()のドキュメントを参照してください。count()およびitemAt()を呼び出すことで、レイアウト内の各アイテムにアクセスできます。removeAt()またはremoveItem()を呼び出すと、アイテムを破棄することなくレイアウトから削除できます。
QGraphicsLinearLayout におけるサイズヒントとサイズポリシー
QGraphicsLinearLayout は各アイテムのサイズヒントとサイズポリシーを尊重し、レイアウト内の空きスペースがアイテムが埋めることができるスペースよりも広い場合、各アイテムは、そのアイテムに対するレイアウトの配置設定に従って配置されます。setAlignment() を呼び出すことで各アイテムの配置を設定でき、alignment() を呼び出すことで任意のアイテムの配置を確認できます。デフォルトでは、アイテムは左上に配置されます。
QGraphicsLinearLayout 内の間隔
レイアウトは、アイテム間に一定のスペースを割り当てます。実際のスペースの量は、管理対象のウィジェットの現在のスタイルによって異なりますが、一般的な間隔は 4 です。また、setSpacing() を呼び出すことで独自の間隔を設定したり、spacing() を呼び出すことで現在の間隔値を取得したりすることもできます。アイテムごとに個別の間隔を設定したい場合は、setItemSpacing() を呼び出すことができます。
QGraphicsLinearLayout におけるストレッチ係数
各アイテムにストレッチ係数を割り当てることで、他のアイテムと比較してそのアイテムに割り当てられるスペースの量を制御できます。 デフォルトでは、線形レイアウトに配置された 2 つの同一のウィジェットは同じサイズになりますが、1 番目のウィジェットのストレッチ係数が 1 で、2 番目のウィジェットのストレッチ係数が 2 の場合、1 番目のウィジェットは利用可能なスペースの 1/3 を、2 番目のウィジェットは 2/3 を割り当てられます。
QGraphicsLinearLayout は、すべての項目のストレッチ係数を合計し、それに応じて利用可能なスペースを割り当てることで、サイズの配分を計算します。すべての項目のデフォルトのストレッチ係数は 0 です。係数が 0 であるということは、その項目にストレッチ係数が定義されていないことを意味し、実質的にはストレッチ係数を 1 に設定したのと同じになります。 ストレッチ係数は、レイアウトの長手方向(その向きに沿った方向)の利用可能なスペースにのみ適用されます。アイテムの水平方向と垂直方向の両方のストレッチを制御したい場合は、代わりにQGraphicsGridLayout を使用してください。
QGraphicsLinearLayout と他のレイアウトとの比較
QGraphicsLinearLayout はQVBoxLayout やQHBoxLayout と非常によく似ていますが、これらのクラスとは対照的に、QWidget やQLayout ではなく、QGraphicsWidget やQGraphicsLayout を管理するために使用されます。
QGraphicsGridLayout およびQGraphicsWidgetも参照してください 。
メンバ関数のドキュメント
QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)
Qt::Horizontal の向きを使用して、QGraphicsLinearLayoutのインスタンスを生成します。parent は、QGraphicsLayout のコンストラクタに渡されます。
QGraphicsLinearLayout::QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)
QGraphicsLinearLayoutのインスタンスを作成します。レイアウトのorientation (水平または垂直)を渡すことができ、parent はQGraphicsLayout のコンストラクタに渡されます。
[virtual noexcept] QGraphicsLinearLayout::~QGraphicsLinearLayout()
QGraphicsLinearLayout オブジェクトを破棄します。
void QGraphicsLinearLayout::addItem(QGraphicsLayoutItem *item)
この便利関数は、insertItem(-1,item) を呼び出すのと同じです。
void QGraphicsLinearLayout::addStretch(int stretch = 1)
この便利関数は、insertStretch(-1,stretch) を呼び出すのと同じです。
Qt::Alignment QGraphicsLinearLayout::alignment(QGraphicsLayoutItem *item) const
item の配置を返します。デフォルトの配置は、Qt::AlignTop |Qt::AlignLeft です。
この配置は、レイアウト内の利用可能なスペースがウィジェットが占有できるスペースよりも広い場合に、そのアイテムが割り当てられたスペース内でどのように配置されるかを決定します。
setAlignment()も参照してください 。
[override virtual] int QGraphicsLinearLayout::count() const
QGraphicsLayout::count() const を再実装します。
void QGraphicsLinearLayout::insertItem(int index, QGraphicsLayoutItem *item)
index のレイアウト、または現在index にある任意の項目の前に、item を挿入します。
addItem()、itemAt()、insertStretch()、およびsetItemSpacing()も参照してください 。
void QGraphicsLinearLayout::insertStretch(int index, int stretch = 1)
index にあるstretch の区間を、または現在index にある任意の項目の前に挿入します。
addStretch()、setStretchFactor()、setItemSpacing()、およびinsertItem()も参照してください 。
[override virtual] void QGraphicsLinearLayout::invalidate()
QGraphicsLayout::invalidate() を再実装します。
[override virtual] QGraphicsLayoutItem *QGraphicsLinearLayout::itemAt(int index) const
QGraphicsLayout::itemAt(int i) const を再実装します。
0 から順に反復処理を行う場合、視覚的に並べられた順序で項目を返します。
qreal QGraphicsLinearLayout::itemSpacing(int index) const
index の項目後のスペースを返します。
setItemSpacing()も参照してください 。
Qt::Orientation QGraphicsLinearLayout::orientation() const
レイアウトの向きを返します。
setOrientation()も参照してください 。
[override virtual] void QGraphicsLinearLayout::removeAt(int index)
QGraphicsLayout::removeAt(int index) を再実装します。
index にある項目を、破棄することなく削除します。項目の所有権は呼び出し元に譲渡されます。
removeItem() およびinsertItem()も参照してください 。
void QGraphicsLinearLayout::removeItem(QGraphicsLayoutItem *item)
item を破棄することなく、レイアウトから削除します。item の所有権は呼び出し元に譲渡されます。
removeAt() およびinsertItem()も参照してください 。
void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)
item の配置をalignment に設定します。item の配置が変更された場合、レイアウトは自動的に無効化されます。
alignment() およびinvalidate()も参照してください 。
[override virtual] void QGraphicsLinearLayout::setGeometry(const QRectF &rect)
QGraphicsLayoutItem::setGeometry (const QRectF &rect)を再実装します。
void QGraphicsLinearLayout::setItemSpacing(int index, qreal spacing)
index の項目後の余白を、spacing に設定します。
itemSpacing()も参照してください 。
void QGraphicsLinearLayout::setOrientation(Qt::Orientation orientation)
レイアウトの向きを「orientation 」に変更します。レイアウトの向きを変更すると、そのレイアウトは自動的に無効になります。
「orientation()」も参照してください 。
void QGraphicsLinearLayout::setSpacing(qreal spacing)
レイアウトの間隔をspacing に設定します。間隔とは、項目間の垂直および水平の距離を指します。
spacing()、setItemSpacing()、setStretchFactor()、およびQGraphicsGridLayout::setSpacing()も参照してください 。
void QGraphicsLinearLayout::setStretchFactor(QGraphicsLayoutItem *item, int stretch)
item のストレッチ係数をstretch に設定します。アイテムのストレッチ係数が変更されると、この関数によってレイアウトが無効化されます。
stretch を0に設定すると、そのアイテムからストレッチ係数が削除され、これは実質的にstretch を1に設定することと同じです。
stretchFactor()も参照してください 。
[override virtual] QSizeF QGraphicsLinearLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
QGraphicsLayoutItem::sizeHint (Qt::SizeHint which, const QSizeF &constraint)const を再実装します。
qreal QGraphicsLinearLayout::spacing() const
レイアウトの間隔を返します。間隔とは、アイテム間の垂直および水平方向の距離を指します。
setSpacing()も参照してください 。
int QGraphicsLinearLayout::stretchFactor(QGraphicsLayoutItem *item) const
item のストレッチ係数を返します。デフォルトのストレッチ係数は0であり、これはそのアイテムにストレッチ係数が割り当てられていないことを意味します。
「setStretchFactor()」も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.