qlayout_zh
2022-04-07 14:39:37

Class::QLayout

暂无该属性


Detailed Description

QLayout 类是几何管理器的基类。 这是一个抽象的基类,由具体的类 QBoxLayoutQGridLayoutQFormLayoutQStackedLayout 继承。

使用 QLayout 子类或 QMainWindow ,几乎不需要使用 QLayout 提供的基础函数,例如 setSizeConstraint()setMenuBar() 。有关更多信息,请参见 Layout Management

要创建自己的布局管理器,需要实现函数 addItem()sizeHint()setGeometry()itemAt()takeAt() 。 还应该实现 minimumSize() ,以确保在空间不足的情况下不会将布局大小调整为零。 为了支持高度取决于其宽度的子级,需要实现 hasHeightForWidth()heightForWidth() 。有关实现自定义布局管理器的更多信息,请参见 layouts/borderlayoutlayouts/flowlayout 示例。

删除布局管理器后,几何管理将停止。

See also QLayoutItem Layout Management Basic Layouts Example Border Layout Example Flow Layout Example

QLayout::QLayout

[public constructor  ]

QLayout(QWidget *parent) 构造一个新的顶层 QLayout ,其父级为_parent_。_parent_不能是nullptr

该布局会被直接设置为_parent_的顶级布局。一个部件只能有一个顶层布局。 QWidget::layout() 返回顶层布局。

QLayout::QLayout

[public constructor  ]

QLayout() 构造一个新的子 QLayout

在几何管理器开始工作之前,必须先将此布局插入另一个布局。

QLayout::QLayout

[private constructor  ]

QLayout(const QLayout &)

QLayout::QLayout

[private constructor  ]

QLayout(QLayoutPrivate &dd, QLayout *lay, QWidget *w)

QLayout::activate

[public plain  ]

bool activate() 如果有必要,重做 parentWidget() 的布局。

通常不需要调用此函数,因为它是在最适当的时间自动调用的。如果重新布局,则返回True。

See also update() QWidget::updateGeometry()

QLayout::activateRecursiveHelper

[private plain static ]

void activateRecursiveHelper(QLayoutItem *item)

QLayout::addChildLayout

[protected plain  ]

void addChildLayout(QLayout *l) 布局_l_作为子布局添加到布局中,可以在子类的addLayout()insertLayout()函数中调用此函数。

需要直接调用它的唯一情况是实现支持嵌套布局的自定义布局。

See also QBoxLayout::addLayout() QBoxLayout::insertLayout() QGridLayout::addLayout()

QLayout::addChildWidget

[protected plain  ]

void addChildWidget(QWidget *w) addWidget()函数的子类调用此函数,将_w_添加为布局的托管窗口部件。

如果_w_已经被布局管理,则此函数将发出警告并从该布局中删除_w_。因此,必须在将_w_添加到布局的数据结构之前调用此函数。

QLayout::addItem

[public plain  ]

void addItem(QLayoutItem *item) = 0 在子类中实现添加_item_。 如何在每个子类特定的添加它。

在应用程序代码中通常不调用此函数。 要将部件添加到布局,请使用 addWidget() 函数;要添加子布局,请使用 QLayout 相关子类提供的 addLayout() 函数。

Note:_item_的所有有权已转移到布局,并且布局的责任是删除它。

See also addWidget() QBoxLayout::addLayout() QGridLayout::addLayout()

QLayout::addWidget

[public plain  ]

void addWidget(QWidget *w) 以特定于布局的方式将部件 _w_添加到此布局。 此函数使用 addItem()

QLayout::adoptLayout

[private plain  ]

bool adoptLayout(QLayout *layout)

QLayout::alignmentRect

[protected plain  ]

QRect alignmentRect(const QRect &r) const 返回此布局的几何设置为_r_时被覆盖的矩形,前提是此布局支持 setAlignment()

结果是从 sizeHint() 和 expanding() 派生的。它永远不会比_r_大。

QLayout::childEvent

[protected plain  virtual]

void childEvent(QChildEvent *e) override

QLayout::closestAcceptableSize

[public plain static ]

QSize closestAcceptableSize(const QWidget *widget, const QSize &size) 返回一个大小,该大小满足_widget_上的所有大小限制,包括 heightForWidth() ,并且尽可能接近_size_。

QLayout::contentsMargins

[public plain  ]

QMargins contentsMargins() const 返回布局周围使用的边距。

默认情况下, QLayout 使用样式提供的值。在大多数平台上,所有方向上的边距均为11像素。

See also setContentsMargins()

QLayout::contentsRect

[public plain  ]

QRect contentsRect() const 返回布局的 geometry() 矩形,但要考虑内容边距。

See also setContentsMargins() getContentsMargins()

QLayout::controlTypes

[public plain  virtual]

QSizePolicy::ControlTypes controlTypes() const override

QLayout::count

[public plain  ]

int count() const = 0 在子类中必须实现返回布局中的项目数。

See also itemAt()

QLayout::d_func

[private plain  ]

QLayoutPrivate * d_func()

QLayout::d_func

[private plain  ]

const QLayoutPrivate * d_func() const

QLayout::expandingDirections

[public plain  virtual]

Qt::Orientations expandingDirections() const override 返回此布局是否可以使用比 sizeHint() 更多的空间。 Qt::VerticalQt::Horizontal 的值表示它只想在一个维度上增长,而 Qt::Vertical | Qt::Horizontal 表示它希望在两个维度上都增长。

默认实现返回 Qt::Horizontal | Qt::Vertical 。子类重新实现它并且返回有意义的值需要基于其子窗口部件的 QSizePolicy

See also sizeHint()

QLayout::geometry

[public plain  virtual]

QRect geometry() const override See also setGeometry()

QLayout::getContentsMargins

[public plain  ]

void getContentsMargins(int *left, int *top, int *right, int *bottom) const 对于不是nullptr的_left_,_top_,_right_和_bottom_,分别存储指针指向被命名位置边距的大小。

默认情况下, QLayout 使用样式提供的值。在大多数平台上,所有方向上的边距均为11像素。

See also setContentsMargins() QStyle::pixelMetric() QStyle::PM_LayoutLeftMargin QStyle::PM_LayoutTopMargin QStyle::PM_LayoutRightMargin QStyle::PM_LayoutBottomMargin

QLayout::indexOf

[public plain  virtual]

int indexOf(QWidget *widget) const 搜索此窗口部件布局中的_widget_(不包括子布局)。

返回_widget_的索引,如果未找到_widget_则返回-1。

默认实现使用 itemAt() 遍历所有条目。

QLayout::indexOf

[public plain  ]

int indexOf(QLayoutItem *layoutItem) const 搜索此布局中的布局条目_layoutItem_(不包括子布局)。

返回_layoutItem_的索引,如果未找到_layoutItem_则返回-1。

QLayout::invalidate

[public plain  virtual]

void invalidate() override

QLayout::isEmpty

[public plain  virtual]

bool isEmpty() const override

QLayout::isEnabled

[public plain  ]

bool isEnabled() const 如果启用了布局,则返回True;否则,返回false

See also setEnabled()

QLayout::itemAt

[public plain  ]

QLayoutItem * itemAt(int index) const = 0 必须在子类中实现并返回布局项的_index_。 如果没有此条目,则该函数必须返回0。从0开始对所有条目进行连续编号。如果删除了某个项目,则其它条目将被重新编号。

此功能可用于迭代布局。以下代码将为部件的布局结构中的每个布局条目绘制一个矩形。

See also count() takeAt()

QLayout::layout

[public plain  virtual]

QLayout * layout() override

QLayout::margin

[public plain  ]

int margin() const See also setMargin()

QLayout::maximumSize

[public plain  virtual]

QSize maximumSize() const override 返回此布局的最大大小。 这是布局可以具有的最大尺寸,同时仍要遵守规格。

返回的值不包含 QWidget::setContentsMargins()menuBar() 所需的空间。

默认实现允许无限调整大小。

QLayout::menuBar

[public plain  ]

QWidget * menuBar() const 返回为此布局设置的菜单栏;如果未设置菜单栏,则返回nullptr

See also setMenuBar()

QLayout::metaObject

[private plain  virtual]

const QMetaObject * metaObject() const override

QLayout::minimumSize

[public plain  virtual]

QSize minimumSize() const override 返回此布局的最小尺寸。 这是布局可以具有的最小尺寸,同时仍要遵守规格。

返回的值不包含 QWidget::setContentsMargins()menuBar() 所需的空间。

默认实现允许无限调整大小。

QLayout::operator=

[private copy-assign  ]

QLayout & operator=(const QLayout &)

QLayout::parentWidget

[public plain  ]

QWidget * parentWidget() const 返回此布局的父窗口部件,如果未在任何窗口部件上安装此布局,则返回nullptr

如果布局是子布局,则此函数返回父布局的父窗口部件。

See also parent()

QLayout::qt_metacall

[private plain  virtual]

int qt_metacall(QMetaObject::Call , int , void **) override

QLayout::qt_metacast

[private plain  virtual]

void * qt_metacast(const char *) override

QLayout::qt_static_metacall

[private plain static ]

void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)

QLayout::removeItem

[public plain  ]

void removeItem(QLayoutItem *item) 从布局中删除布局条目_item_。 删除条目是调用者的责任。

需要注意该_item_可以是布局(因为 QLayout 继承了 QLayoutItem )。

See also removeWidget() addItem()

QLayout::removeWidget

[public plain  ]

void removeWidget(QWidget *widget) 从布局中删除_widget_部件。调用之后,调用方有责任为窗口部件提供合理的几何形状,或将窗口部件放回布局中,或在必要时显式隐藏它。

Note:_widget_部件的所有权与添加时的所有权相同。

See also removeItem() QWidget::setGeometry() addWidget()

QLayout::replaceWidget

[public plain  ]

QLayoutItem * replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOptions options) 搜索部件_from_,如果找到,则将其用_to_替换。 成功返回包含部件_from_的布局条目。 否则返回nullptr。 如果_options_包含Qt::FindChildrenRecursively(默认),则搜索子布局以进行替换。中的任何其它_options_都将被忽略。

请注意,此返回的条目可能不属于此布局,而是一个子布局。

返回的布局条目不再属于该布局所有,应将其删除或插入到另一个布局中。窗口部件不再由布局管理,可能需要删除或隐藏。 窗口部件_from_的父指针保持不变。

此功能适用于内置 Qt 布局,但可能不适用于自定义布局。

See also indexOf()

QLayout::setAlignment

[public plain  ]

bool setAlignment(QWidget *w, Qt::Alignment alignment) 如果在此布局(不包括子布局)中找到_w_,将部件_w_的对齐方式设置为_alignment_并且返回 True,否则返回false

QLayout::setAlignment

[public plain  ]

bool setAlignment(QLayout *l, Qt::Alignment alignment) 这是一个重载方法。

如果在此布局(不包括子布局)中找到_l_,将布局_l_的对齐方式设置为_alignment_并且返回,否则返回false

QLayout::setContentsMargins

[public plain  ]

void setContentsMargins(int left, int top, int right, int bottom) 设置要在布局周围使用的_left_,_top_,_right_和_bottom_页边距。

默认情况下, QLayout 使用样式提供的值。在大多数平台上,所有方向上的边距均为11像素。

See also contentsMargins() getContentsMargins() QStyle::pixelMetric() QStyle::PM_LayoutLeftMargin QStyle::PM_LayoutTopMargin QStyle::PM_LayoutRightMargin QStyle::PM_LayoutBottomMargin

QLayout::setContentsMargins

[public plain  ]

void setContentsMargins(const QMargins &margins) 设置要在布局周围使用的_margins_。

默认情况下, QLayout 使用样式提供的值。在大多数平台上,所有方向上的边距均为11像素。

See also contentsMargins()

QLayout::setEnabled

[public plain  ]

void setEnabled(bool enable) 如果_enable_为 True,则启用此布局,否则禁用布局。

启用布局会根据更改进行动态调整;禁用布局不影响功能。

默认情况下,所有布局均处于启用状态。

See also isEnabled()

QLayout::setGeometry

[public plain  virtual]

void setGeometry(const QRect &r) override See also geometry()

QLayout::setMargin

[public plain  ]

void setMargin(int margin) See also margin()

QLayout::setMenuBar

[public plain  ]

void setMenuBar(QWidget *widget) 告诉几何管理器将菜单栏_widget_放置在 parentWidget() 的顶部, QWidget::contentsMargins() 的外部。 所有子窗口部件都放置在菜单栏底部边缘的下方。

See also menuBar()

QLayout::setSizeConstraint

[public plain  ]

void setSizeConstraint(QLayout::SizeConstraint ) See also sizeConstraint()

QLayout::setSpacing

[public plain  ]

void setSpacing(int ) See also spacing()

QLayout::sizeConstraint

[public plain  ]

QLayout::SizeConstraint sizeConstraint() const See also setSizeConstraint()

QLayout::spacing

[public plain  ]

int spacing() const See also setSpacing()

QLayout::takeAt

[public plain  ]

QLayoutItem * takeAt(int index) = 0 必须在子类中实现从布局中删除在_index_处的布局条目,然后返回该条目。如果没有此条目,则该函数将不执行任何操作并返回0。条目从0开始进行连续编号。如果删除了某个条目,则将对其它条目进行重新编号。

以下代码片段显示了一种从布局中删除所有条目的安全方法:

See also itemAt() count()

QLayout::totalHeightForWidth

[private plain  ]

int totalHeightForWidth(int w) const contentsMargins 和菜单栏都将考虑在内。

QLayout::totalMaximumSize

[private plain  ]

QSize totalMaximumSize() const contentsMargins 和菜单栏都将考虑在内。

QLayout::totalMinimumSize

[private plain  ]

QSize totalMinimumSize() const contentsMargins 和菜单栏都将考虑在内。

QLayout::totalSizeHint

[private plain  ]

QSize totalSizeHint() const contentsMargins 和菜单栏都将考虑在内。

QLayout::update

[public plain  ]

void update() 更新 parentWidget() 的布局。

通常,不需要调用此函数,因为它是在最适当的时间自动调用的。

See also activate() invalidate()

QLayout::widgetEvent

[private plain  ]

void widgetEvent(QEvent *e) 调整父窗口部件的大小时,执行子窗口部件的布局。 也处理部件的移除。_e_是事件

QLayout::~QLayout

[private destructor  virtual]

~QLayout() 销毁布局,删除所有子布局。 当删除顶层布局时,几何管理器将停止工作。

如果删除子布局,则布局类可能会造成致命的困惑。

可能的值为:

QLayout::SetDefaultConstraintSetDefaultConstraint

Constant Description
QLayout::SetDefaultConstraint 主窗口部件的最小大小设置为 minimumSize() ,除非窗口部件已经具有最小大小。
QLayout::SetFixedSizeSetFixedSize
Constant Description
:------- :-----
QLayout::SetFixedSize 主窗口部件的大小设置为 sizeHint() ; 它无法调整大小。
QLayout::SetMinimumSizeSetMinimumSize
Constant Description
:------- :-----
QLayout::SetMinimumSize 主窗口部件的最小大小设置为 minimumSize() ; 它不能更小。
QLayout::SetMaximumSizeSetMaximumSize
Constant Description
:------- :-----
QLayout::SetMaximumSize 主窗口部件的最大大小设置为 maximumSize() ; 它不能更大。
QLayout::SetMinAndMaxSizeSetMinAndMaxSize
Constant Description
:------- :-----
QLayout::SetMinAndMaxSize 主窗口部件的最小大小设置为 minimumSize() ,其最大大小设置为 maximumSize()
QLayout::SetNoConstraintSetNoConstraint
Constant Description
:------- :-----
QLayout::SetNoConstraint 部件不受约束。

See also setSizeConstraint() 此属性保存布局外部边框的宽度。 使用 setContentsMargins()getContentsMargins() 替代。

See also contentsRect() spacing 此属性保存布局的调整大小模式。 默认模式为 QLayout::SetDefaultConstraint

此属性保存布局内部件之间的间距。 如果未显式设置任何值,则布局的间距将从父布局或父窗口部件的样式设置中继承。

对于 QGridLayoutQFormLayout ,可以使用 QGridLayout::setHorizontalSpacing()QGridLayout::setVerticalSpacing() 设置不同的水平和垂直间距。 在这种情况下,返回-1。

See also contentsRect() getContentsMargins() QStyle::layoutSpacing() QStyle::pixelMetric()