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 は、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)
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.