QGraphicsLinearLayout Class
QGraphicsLinearLayoutクラスは、グラフィックスビューでウィジェットを管理するための水平または垂直レイアウトを提供します。詳細...
Header: | #include <QGraphicsLinearLayout> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Inherits: | 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
レイアウトの間隔を返します。Spacing とは、アイテム間の垂直方向と水平方向の距離のことです。
setSpacing()も参照してください 。
int QGraphicsLinearLayout::stretchFactor(QGraphicsLayoutItem *item) const
item の伸縮率を返します。デフォルトのストレッチ・ファクターは 0 で、これはアイテムにストレッチ・ファクターが割り当てられていないことを意味します。
setStretchFactor() も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。