QGraphicsLinearLayout类

QGraphicsLinearLayout类为图形视图中的小部件提供水平或垂直布局。 更多信息...

头文件 #include <QGraphicsLinearLayout>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QGraphicsLayout

公共函数

QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)
QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)
虚拟~QGraphicsLinearLayout()
voidaddItem(QGraphicsLayoutItem *item)
voidaddStretch(int stretch = 1)
Qt::Alignmentalignment(QGraphicsLayoutItem *item) const
voidinsertItem(int index, QGraphicsLayoutItem *item)
voidinsertStretch(int index, int stretch = 1)
qrealitemSpacing(int index) const
Qt::Orientationorientation() const
voidremoveItem(QGraphicsLayoutItem *item)
voidsetAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)
voidsetItemSpacing(int index, qreal spacing)
voidsetOrientation(Qt::Orientation orientation)
voidsetSpacing(qreal spacing)
voidsetStretchFactor(QGraphicsLayoutItem *item, int stretch)
qrealspacing() const
intstretchFactor(QGraphicsLayoutItem *item) const

重写的公共函数

虚拟 intcount() const override
虚拟 voidinvalidate() override
虚拟 QGraphicsLayoutItem *itemAt(int index) const override
虚拟 voidremoveAt(int index) override
虚拟 voidsetGeometry(const QRectF &rect) override
虚拟 QSizeFsizeHint(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() 将此布局设置为该部件的顶级布局,部件将获得布局的所有权。

您可以将部件、布局、拉伸(addStretchinsertStretchsetStretchFactor)和间距(setItemSpacing)添加到线性布局中。布局将获得这些项目。在某些情况下,当布局项也继承自 QGraphicsItem(例如 QGraphicsWidget)时,由于布局项属于两个所有者层次结构,因此可能存在所有权的歧义。有关如何处理这种情况,请参阅 QGraphicsLayoutItem::setOwnedByLayout() 的文档。您可以通过调用 count() 和 itemAt() 访问布局中的每个项目。调用 removeAt() 或 removeItem() 将从布局中移除一个项目,而不会销毁它。

QGraphicsLinearLayout 中的大小提示和大小策略

QGraphicsLinearLayout 会对每个项的大小提示和大小策略表示尊重,并且当布局包含比项能填满更多空间时,每个项将根据布局为该项指定的对齐方式排列。您可以通过调用 setAlignment() 为每个项设置对齐方式,并通过调用 alignment() 检查任何项的对齐方式。默认情况下,项对齐到左上角。

QGraphicsLinearLayout 内的间距

在项之间,布局分配一些空间。实际空间量取决于被管理的部件的当前样式,但常见的间距为 4。您还可以通过调用 setSpacing() 设置自己的间距,并通过调用 spacing() 获取当前间距值。如果您想为您的项目配置单个间距,可以调用 setItemSpacing()。

QGraphicsLinearLayout 中的拉伸因子

您可以给每个项分配一个拉伸因子以控制其相对于其他项将获得多少空间。默认情况下,在线性布局中排列的两个相同部件将具有相同的大小,但如果第一个部件的拉伸因子为 1 且第二个部件的拉伸因子为 2,则第一个部件将获得可用空间的三分之一,而第二个将获得三分之二。

QGraphicsLinearLayout通过将所有项的扩展因子相加来计算大小分布,然后根据可用空间相应地进行分配。默认的扩展因子为所有项都是0;因子为0表示该项没有定义扩展因子;实际上这等于将扩展因子设置为1。扩展因子仅适用于布局长度方向上的可用空间(遵循其方向)。如果您想同时控制项的水平和垂直扩展,可以使用QGraphicsGridLayout

QGraphicsLinearLayout与其他布局比较

QGraphicsLinearLayout与QVBoxLayoutQHBoxLayout非常相似,但与这些类不同,它用于管理QGraphicsWidgetQGraphicsLayout而不是QWidgetQLayout

另请参阅QGraphicsGridLayoutQGraphicsWidget

成员函数文档

QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)

使用Qt::Horizontal方向构建QGraphicsLinearLayout实例。将parent传递给QGraphicsLayout的构造函数。

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

构建一个QGraphicsLinearLayout实例。您可以传递布局的orientation,可以是水平或垂直,并将parent传递给QGraphicsLayout的构造函数。

[虚函数] 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()。

[覆盖虚函数] int QGraphicsLinearLayout::count() const

重新实现: QGraphicsLayout::count() const.

void QGraphicsLinearLayout::insertItem(int index, QGraphicsLayoutItem *item)

在布局中的 index 位置插入 item,或者插入到当前位于 index 的任何项目的前面。

另请参阅addItem()、itemAt()、insertStretch() 和 setItemSpacing()。

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

index 位置插入 stretch,或者插入到当前位于 index 的任何项目的前面。

另请参阅addStretch()、setStretchFactor()、setItemSpacing() 和 insertItem()。

[覆盖虚函数] void QGraphicsLinearLayout::invalidate()

重新实现: QGraphicsLayout::invalidate.

[覆盖虚函数] QGraphicsLayoutItem *QGraphicsLinearLayout::itemAt(int index) const

重新实现: QGraphicsLayout::itemAt(int i) const.

迭代从 0 开始向上时,它将返回按视觉排列顺序的项目。

qreal QGraphics LLCN LinearLayout::itemSpacing(int index) const

返回 index 处项目的间距。

另请参阅setItemSpacing()。

Qt::Orientation QGraphicsLinearLayout::orientation() const

返回布局方向。

另请参阅setOrientation()。

[覆盖虚函数] void QGraphicsLinearLayout::removeAt(int index)

重新实现: QGraphicsLayout::removeAt(int index)。

不会销毁它在 index 位置的项目。项目的所有权转让给调用者。

另请参阅removeItem() 和 insertItem()。

void QGraphicsLinearLayout::removeItem(QGraphicsLayoutItem *item)

不会销毁它在布局中的项目 item。项目的所有权转让给调用者。

另请参阅removeAt() 和 insertItem()。

void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)

设置 item 的对齐方式为 alignment。如果 item 的对齐方式发生变化,布局将自动无效。

另请参阅 alignment() 和 invalidate()。

[覆盖虚拟] 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().

[覆盖虚拟] 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().

© 2024 The Qt Company Ltd. 其中包含的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的公之于众的GNU自由文档许可协议版本1.3进行许可的。Qt及其相关标志是芬兰及/或全球其他国家的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。