• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • qlayout_zh

    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()