QGraphicsLinearLayout Class

QGraphicsLinearLayoutクラスは、グラフィックスビューでウィジェットを管理するための水平または垂直レイアウトを提供します。詳細...

ヘッダー #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 で、2 番目のウィジェットのストレッチファクターが 2 の場合、最初のウィジェットは利用可能なスペースの 1/3 を取得し、2 番目のウィジェットは 2/3 を取得します。

QGraphicsLinearLayout は、すべてのアイテムのストレッチファクターを合計し、それに応じて利用可能なスペースを分割することで、サイズの分布を計算します。デフォルトのストレッチファクターは、すべてのアイテムに対して0です。ファクター0は、アイテムに定義されたストレッチファクターがないことを意味します。アイテムの水平方向と垂直方向の両方の伸縮を制御したい場合は、代わりにQGraphicsGridLayout を使用できます。

QGraphicsLinearLayout と他のレイアウトとの比較

QGraphicsLinearLayout は、QVBoxLayoutQHBoxLayout と非常によく似ていますが、これらのクラスとは対照的に、QWidgetQLayout ではなく、QGraphicsWidgetQGraphicsLayout を管理するために使用されます。

QGraphicsGridLayout およびQGraphicsWidgetも参照してください

メンバ関数ドキュメント

QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)

Qt::Horizontal 方向を使用して QGraphicsLinearLayout インスタンスを構築します。parentQGraphicsLayout のコンストラクタに渡されます。

QGraphicsLinearLayout::QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)

QGraphicsLinearLayout インスタンスを構築します。レイアウトにはorientation を渡すことができ、水平または垂直のどちらかを指定します。parentQGraphicsLayout のコンストラクタに渡されます。

[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)

item をレイアウトのindex 、または現在index にあるアイテムの前に挿入します。

addItem()、itemAt()、insertStretch()、setItemSpacing()も参照のこと

void QGraphicsLinearLayout::insertStretch(int index, int stretch = 1)

index 、または現在index にあるアイテムの前に、stretch のストレッチを挿入する。

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()も参照してください

© 2025 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.