QGraphicsLayoutItem Class
QGraphicsLayoutItem クラスを継承することで、カスタムアイテムをレイアウトで管理できるようになります。詳細...
| ヘッダー: | #include <QGraphicsLayoutItem> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: |
パブリック関数
| QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false) | |
| virtual | ~QGraphicsLayoutItem() |
| QRectF | contentsRect() const |
| QSizeF | effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
| QRectF | geometry() const |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
| QGraphicsItem * | graphicsItem() const |
(since 6.0) virtual bool | isEmpty() const |
| bool | isLayout() const |
| qreal | maximumHeight() const |
| QSizeF | maximumSize() const |
| qreal | maximumWidth() const |
| qreal | minimumHeight() const |
| QSizeF | minimumSize() const |
| qreal | minimumWidth() const |
| bool | ownedByLayout() const |
| QGraphicsLayoutItem * | parentLayoutItem() const |
| qreal | preferredHeight() const |
| QSizeF | preferredSize() const |
| qreal | preferredWidth() const |
| virtual void | setGeometry(const QRectF &rect) |
| void | setMaximumHeight(qreal height) |
| void | setMaximumSize(const QSizeF &size) |
| void | setMaximumSize(qreal w, qreal h) |
| void | setMaximumWidth(qreal width) |
| void | setMinimumHeight(qreal height) |
| void | setMinimumSize(const QSizeF &size) |
| void | setMinimumSize(qreal w, qreal h) |
| void | setMinimumWidth(qreal width) |
| void | setParentLayoutItem(QGraphicsLayoutItem *parent) |
| void | setPreferredHeight(qreal height) |
| void | setPreferredSize(const QSizeF &size) |
| void | setPreferredSize(qreal w, qreal h) |
| void | setPreferredWidth(qreal width) |
| void | setSizePolicy(const QSizePolicy &policy) |
| void | setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType) |
| QSizePolicy | sizePolicy() const |
| virtual void | updateGeometry() |
プロテクトされた関数
| void | setGraphicsItem(QGraphicsItem *item) |
| void | setOwnedByLayout(bool ownership) |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0 |
詳細な説明
QGraphicsLayoutItem は、QGraphicsLayout によって配置されるあらゆるオブジェクトのサイズ、サイズポリシー、およびサイズヒントを記述する一連の仮想関数を定義する抽象クラスです。QGraphicsLayoutItem の関数のほとんどはサブクラスのパブリック API の一部でもあるため、この API には、アイテム自体とアイテムのユーザーの両方に関連する関数が含まれています。
ほとんどの場合、QGraphicsWidget やQGraphicsLayout などの既存のレイアウト対応クラスが、必要な機能をすでに提供しています。ただし、これらのクラスをサブクラス化することで、レイアウト(QGraphicsWidget )やカスタムレイアウト(QGraphicsLayout )と連携するグラフィック要素を作成することが可能になります。
QGraphicsLayoutItemのサブクラス化
QGraphicsLayoutItem のサブクラスを作成し、その仮想関数を再実装することで、QGraphicsWidget やQGraphicsLayout を含む他の QGraphicsLayoutItem と共に、レイアウトがアイテムのサイズ変更や配置を行うことが可能になります。
まずは、重要な関数、すなわちプロテクトされたsizeHint()関数と、パブリックなsetGeometry()関数を再実装することから始めるとよいでしょう。アイテムにジオメトリの即時変更を認識させたい場合は、updateGeometry()も再実装できます。
ジオメトリ、サイズヒント、およびサイズポリシーは、アイテムのサイズと位置に影響を与えます。setGeometry() を呼び出すと、常にアイテムのサイズ変更と位置調整が即座に行われます。通常、この関数はレイアウトが有効化された後にQGraphicsLayout によって呼び出されますが、アイテムのユーザーがいつでも呼び出すことも可能です。
sizeHint() 関数は、アイテムの最小、推奨、および最大サイズヒントを返します。これらのプロパティは、setMinimumSize()、setPreferredSize()、またはsetMaximumSize() を呼び出すことで上書きできます。また、必要に応じて、setMinimumWidth() やsetMaximumHeight() などの関数を使用して、幅または高さのいずれか一方のみを設定することも可能です。
一方、effectiveSizeHint() 関数は、任意のQt::SizeHint に対するサイズヒントを返し、返されたサイズが最小サイズ、最大サイズ、およびサイズヒントの範囲内に収まることを保証します。setSizePolicy() を呼び出すことで、アイテムの垂直および水平方向のサイズポリシーを設定できます。sizePolicy プロパティは、レイアウトシステムによって、このアイテムがどのように拡大または縮小することを好むかを記述するために使用されます。
QGraphicsLayoutItem のネスト
QGraphicsLayoutItemは、サブレイアウトを含むことができるレイアウトと同様に、他のQGraphicsLayoutItem内にネストすることができます。これは、QGraphicsLayoutItemのprotectedコンストラクタにQGraphicsLayoutItemポインタを渡すか、setParentLayoutItem()を呼び出すことで行われます。parentLayoutItem() 関数は、その項目のレイアウトアイテム親へのポインタを返します。項目の親がnullptr である場合、または親がQGraphicsItem を継承していない場合、parentLayoutItem() 関数はnullptr を返します。isLayout() は、QGraphicsLayoutItemのサブクラス自体がレイアウトである場合はtrue を返し、そうでない場合はfalseを返します。
Qt は、Graphics View Framework においてレイアウト機能を提供するために QGraphicsLayoutItem を使用していますが、将来的には Qt 全体でその使用が広がる可能性があります。
QGraphicsWidget 、QGraphicsLayout 、QGraphicsLinearLayout 、およびQGraphicsGridLayoutも参照してください 。
メンバ関数のドキュメント
QGraphicsLayoutItem::QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)
QGraphicsLayoutItem オブジェクトを生成します。parent がそのオブジェクトの親となります。isLayout が true の場合、そのアイテムはレイアウトとなります。そうでない場合、isLayout は false となります。
[virtual noexcept] QGraphicsLayoutItem::~QGraphicsLayoutItem()
QGraphicsLayoutItem オブジェクトを破棄します。
QRectF QGraphicsLayoutItem::contentsRect() const
ローカル座標系でのコンテンツ矩形を返します。
contents_rect は、関連付けられたレイアウトがサブアイテムを配置する際に使用する部分矩形を定義します。この関数は、アイテムの `geometry()` をそのコンテンツの余白に合わせて調整する便宜関数です。なお、`getContentsMargins()` は仮想関数であり、アイテムのコンテンツの余白を返すように再実装することができます。
getContentsMargins() およびgeometry()も参照してください 。
QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
このQGraphicsLayoutItem に対する実効サイズヒントを返します。
which は、対象となるサイズヒントです。constraint は、有効なサイズヒントを計算する際に特別な制約を定義するオプションの引数です。デフォルトでは、constraint はQSizeF(-1, -1)に設定されており、これはサイズヒントに制約がないことを意味します。
特定の幅または高さに合わせてウィジェットのサイズヒントを指定したい場合は、constraint に固定寸法を指定できます。これは、縦方向または横方向のいずれか一方のみ拡大可能で、幅または高さのいずれかを特定の値に設定する必要があるウィジェットに役立ちます。
たとえば、列幅 200 に収まるテキスト段落アイテムは、垂直方向に伸縮する可能性があります。QSizeF(200, -1) を制約として渡すことで、適切な最小高さ、推奨高さ、最大高さを取得できます。
QGraphicsLayoutItem のサブクラスでsizeHint()を再実装するか、setMinimumSize()、setPreferredSize 、setMaximumSize()のいずれかの関数(あるいはその組み合わせ)を呼び出すことで、有効なサイズヒントを調整できます。
この関数は各サイズヒントをキャッシュし、`which ` の各値に対して `sizeHint()` が 1 回だけ呼び出されることを保証します。ただし、`constraint ` が指定されておらず、かつ `updateGeometry()` が呼び出されている場合はこの限りではありません。
sizeHint()も参照してください 。
QRectF QGraphicsLayoutItem::geometry() const
アイテムのジオメトリ(位置やサイズなど)をQRectF として返します。この関数は、QRectF (pos()、size())と同等です。
setGeometry()も参照してください 。
[virtual] void QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
この仮想関数は、このQGraphicsLayoutItem に対するleft 、top 、right 、およびbottom のコンテンツマージンを提供します。デフォルトの実装では、すべてのコンテンツマージンが0であると仮定しています。パラメータは、qrealsに格納された値へのポインタです。いずれかのポインタがnullptr の場合、その値は更新されません。
QGraphicsWidget::setContentsMargins()も参照してください 。
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
このレイアウト項目が表すQGraphicsItem を返します。QGraphicsWidget の場合は、それ自体を返します。カスタム項目の場合は、集計値を返すことがあります。
setGraphicsItem()も参照してください 。
[virtual, since 6.0] bool QGraphicsLayoutItem::isEmpty() const
このアイテムが空の場合、つまり内容がなく、スペースを占有すべきでない場合に、true を返します。
true デフォルトの実装では、アイテムが非表示になっている場合、size policy の `retainSizeWhenHidden` がtrue
この関数は Qt 6.0 で導入されました。
sizePolicy()も参照してください 。
bool QGraphicsLayoutItem::isLayout() const
この `QGraphicsLayoutItem ` がレイアウト(例えば、他の `QGraphicsLayoutItem ` オブジェクトを配置するオブジェクトによって継承されている場合など)である場合は `true ` を返し、そうでない場合は `false` を返します。
QGraphicsLayoutも参照してください 。
qreal QGraphicsLayoutItem::maximumHeight() const
最大の高さを返します。
setMaximumHeight()、setMaximumSize()、およびmaximumSize()も参照してください 。
QSizeF QGraphicsLayoutItem::maximumSize() const
最大サイズを返します。
setMaximumSize()、minimumSize()、preferredSize()、Qt::MaximumSize 、およびsizeHint()も参照してください 。
qreal QGraphicsLayoutItem::maximumWidth() const
最大幅を返します。
setMaximumWidth()、setMaximumSize()、およびmaximumSize()も参照してください 。
qreal QGraphicsLayoutItem::minimumHeight() const
最小の高さを返します。
setMinimumHeight()、setMinimumSize()、およびminimumSize()も参照してください 。
QSizeF QGraphicsLayoutItem::minimumSize() const
最小サイズを返します。
setMinimumSize()、preferredSize()、maximumSize()、Qt::MinimumSize 、およびsizeHint()も参照してください 。
qreal QGraphicsLayoutItem::minimumWidth() const
最小幅を返します。
setMinimumWidth()、setMinimumSize()、およびminimumSize()も参照してください 。
bool QGraphicsLayoutItem::ownedByLayout() const
レイアウトがそのデストラクタ内でこのアイテムを削除すべきかどうかを返します。true の場合、レイアウトはこのアイテムを削除します。false の場合、別のオブジェクトがこのアイテムの所有権を持っているものとみなされ、レイアウトはこのアイテムを削除しません。
アイテムが `QGraphicsItem ` と `QGraphicsLayoutItem ` の両方を継承している場合(`QGraphicsWidget ` など)、そのアイテムは実際には 2 つの所有権階層の一部となります。このプロパティは、レイアウトが破棄される際に、その子アイテムに対してどのような処理を行うべきかを指定します。QGraphicsWidget の場合、レイアウトが削除される際、その子アイテムは削除されないことが推奨されます(子アイテムもグラフィックアイテム階層の一部であるため)。
デフォルトでは、この値はQGraphicsLayoutItem でfalseに初期化されますが、QGraphicsLayout によって上書きされ、trueが返されます。これは、QGraphicsLayout が通常QGraphicsItem の階層の一部ではないため、親レイアウトがこれを削除すべきであるからです。サブクラスは、setOwnedByLayout(true)を呼び出すことで、このデフォルトの挙動を上書きすることができます。
setOwnedByLayout()も参照してください 。
QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const
このQGraphicsLayoutItem の親クラスを返します。親クラスがない場合、または親クラスがQGraphicsLayoutItem を継承していない場合は、nullptr を返します(QGraphicsLayoutItem は、QObject を基底とするクラスとの多重継承を通じてよく使用されます)。
setParentLayoutItem()も参照してください 。
qreal QGraphicsLayoutItem::preferredHeight() const
推奨される高さを返します。
setPreferredHeight()、setPreferredSize()、およびpreferredSize()も参照してください 。
QSizeF QGraphicsLayoutItem::preferredSize() const
推奨サイズを返します。
setPreferredSize()、minimumSize()、maximumSize()、Qt::PreferredSize 、およびsizeHint()も参照してください 。
qreal QGraphicsLayoutItem::preferredWidth() const
推奨幅を返します。
setPreferredWidth()、setPreferredSize()、およびpreferredSize()も参照してください 。
[virtual] void QGraphicsLayoutItem::setGeometry(const QRectF &rect)
この仮想関数は、QGraphicsLayoutItem のジオメトリをrect に設定します。これは親座標系での座標です(例えば、rect の左上隅は、親座標系におけるアイテムの位置に相当します)。
ジオメトリの更新を受け取るには、QGraphicsLayoutItem のサブクラスでこの関数を再実装する必要があります。レイアウトは再配置を行う際にこの関数を呼び出します。
rect がminimumSize およびmaximumSize の範囲外にある場合、有効な範囲内に入るよう、最も近いサイズに調整されます。
geometry()も参照してください 。
[protected] void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
QGraphicsLayoutItem がQGraphicsItem を表しており、QGraphicsLayout の自動リペアレント機能を利用したい場合は、この値を設定する必要があります。なお、item を削除してもレイアウト項目を削除しない場合、ダングリングポインタの発生を防ぐために、setGraphicsItem(nullptr)を呼び出す必要があります。
graphicsItem()も参照してください 。
void QGraphicsLayoutItem::setMaximumHeight(qreal height)
最大高さをheight に設定します。
maximumHeight()、setMaximumSize()、およびmaximumSize()も参照してください 。
void QGraphicsLayoutItem::setMaximumSize(const QSizeF &size)
最大サイズをsize に設定します。このプロパティは、Qt::MaximumSize に対するsizeHint()を上書きし、effectiveSizeHint()がsize を超えるサイズを返すことがないよう保証します。最大サイズの設定を解除するには、無効なサイズを指定してください。
関連項目: maximumSize()、minimumSize()、preferredSize()、Qt::MaximumSize 、およびsizeHint()。
void QGraphicsLayoutItem::setMaximumSize(qreal w, qreal h)
この便利関数は、setMaximumSize(QSizeF(w,h)) を呼び出すのと同じです。
maximumSize()、setMinimumSize()、setPreferredSize()、およびsizeHint()も参照してください 。
void QGraphicsLayoutItem::setMaximumWidth(qreal width)
最大幅をwidth に設定します。
maximumWidth()、setMaximumSize()、およびmaximumSize()も参照してください 。
void QGraphicsLayoutItem::setMinimumHeight(qreal height)
最小高さをheight に設定します。
minimumHeight()、setMinimumSize()、およびminimumSize()も参照してください 。
void QGraphicsLayoutItem::setMinimumSize(const QSizeF &size)
最小サイズをsize に設定します。このプロパティは、Qt::MinimumSize に対してsizeHint()を上書きし、effectiveSizeHint()がsize より小さいサイズを返すことがないよう保証します。最小サイズの設定を解除するには、無効なサイズを使用してください。
関連項目: minimumSize()、maximumSize()、preferredSize()、Qt::MinimumSize 、sizeHint()、setMinimumWidth()、およびsetMinimumHeight()。
void QGraphicsLayoutItem::setMinimumSize(qreal w, qreal h)
この便利関数は、setMinimumSize(QSizeF(w,h)) を呼び出すのと同じです。
minimumSize()、setMaximumSize()、setPreferredSize()、およびsizeHint()も参照してください 。
void QGraphicsLayoutItem::setMinimumWidth(qreal width)
最小幅をwidth に設定します。
minimumWidth()、setMinimumSize()、およびminimumSize()も参照してください 。
[protected] void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)
レイアウトがそのデストラクタ内でこの項目を削除するかどうかを設定します。レイアウトがこの項目を削除するには、ownership がtrueでなければなりません。
ownedByLayout()も参照してください 。
void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)
このQGraphicsLayoutItem の親をparent に設定します。
parentLayoutItem()も参照してください 。
void QGraphicsLayoutItem::setPreferredHeight(qreal height)
推奨高さをheight に設定します。
preferredHeight()、preferredWidth()、setPreferredSize()、およびpreferredSize()も参照してください 。
void QGraphicsLayoutItem::setPreferredSize(const QSizeF &size)
優先サイズをsize に設定します。このプロパティは、Qt::PreferredSize に対するsizeHint()を上書きし、effectiveSizeHint()のデフォルト値を提供します。優先サイズの設定を解除するには、無効なサイズを指定してください。
関連項目: preferredSize()、minimumSize()、maximumSize()、Qt::PreferredSize 、およびsizeHint()。
void QGraphicsLayoutItem::setPreferredSize(qreal w, qreal h)
この便利関数は、setPreferredSize(QSizeF(w,h)) を呼び出すのと同じです。
preferredSize()、setMaximumSize()、setMinimumSize()、およびsizeHint()も参照してください 。
void QGraphicsLayoutItem::setPreferredWidth(qreal width)
推奨幅をwidth に設定します。
preferredWidth()、preferredHeight()、setPreferredSize()、およびpreferredSize()も参照してください 。
void QGraphicsLayoutItem::setSizePolicy(const QSizePolicy &policy)
サイズポリシーを「policy 」に設定します。サイズポリシーは、レイアウト内に配置されたアイテムが水平方向および垂直方向にどのように拡大すべきかを規定するものです。
QGraphicsLayoutItemのデフォルトのサイズポリシーは (QSizePolicy::Fixed,QSizePolicy::Fixed,QSizePolicy::DefaultType) ですが、サブクラスでこのデフォルトを変更するのが一般的です。たとえば、QGraphicsWidget のデフォルトは (QSizePolicy::Preferred,QSizePolicy::Preferred,QSizePolicy::DefaultType) です。
sizePolicy() およびQWidget::sizePolicy()も参照してください 。
void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)
この関数は、setSizePolicy(QSizePolicy(hPolicy,vPolicy,controlType)) を呼び出すのと同じです。
これはオーバーロードされた関数です。
sizePolicy() およびQWidget::sizePolicy()も参照してください 。
[pure virtual protected] QSizeF QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
この純粋仮想関数は、constraint の幅または高さを用いて出力を制限し、QGraphicsLayoutItem のwhich に対するサイズヒントを返します。
QGraphicsLayoutItem のサブクラスでこの関数を再実装し、アイテムに必要なサイズヒントを提供してください。
effectiveSizeHint()も参照してください 。
QSizePolicy QGraphicsLayoutItem::sizePolicy() const
現在のサイズポリシーを返します。
setSizePolicy() およびQWidget::sizePolicy()も参照してください 。
[virtual] void QGraphicsLayoutItem::updateGeometry()
この仮想関数は、キャッシュされたサイズヒント情報をすべて破棄します。sizeHint() 関数の戻り値を変更した場合は、必ずこの関数を呼び出す必要があります。サブクラスは、この関数を再実装する際、必ず基底クラスの実装を呼び出す必要があります。
effectiveSizeHint()も参照してください 。
© 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.