布局类(03):【类】QLayout[官翻]

QLayout 类

QLayout类是几何管理器的基类。

Header:#include < QLayout >
qmake:QT += widgets
Inherits:QObject and QLayoutItem
Inherited By:QBoxLayout, QFormLayout, QGridLayout, QStackedLayout

详细说明

这是由具体类QBoxLayout、QGridLayout、QFormLayout和QStackedLayout继承的抽象基类。

对于QLayout子类或QMainWindow的用户,很少需要使用QLayout提供的基本函数,例如setSizeConstraint() 或setMenuBar() 。有关详细信息,请参见布局管理。

要创建自己的布局管理器,请实现addItem() 、sizeHint() 、setGeometry() 、itemAt() 和takeAt() 函数。您还应该实现minimumSize() ,以确保如果空间太小,布局的大小不会调整为零。要支持高度取决于宽度的子级,请实现hasHeightForWidth() 和heightForWidth() 。有关实现自定义布局管理器的详细信息,请参见边界布局和流布局示例。

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

公共类型

## enum SizeConstraint

ConstantValueDescription
QLayout::SetDefaultConstraint0主部件的最小大小设置为minimumSize(),除非该部件已经有一个最小大小。
QLayout::SetNoConstraint1小部件不受限制。
QLayout::SetMinimumSize2主部件的最小大小设置为minimumSize();不能再小了。
QLayout::SetFixedSize3主部件的大小设置为sizeHint();它根本不能调整大小。
QLayout::SetMaximumSize4主部件的最大尺寸设置为maximumSize();不能再大了。
QLayout::SetMinAndMaxSize5主部件的最小大小设置为minimumSize(),最大大小设置为maximumSize()。

属性

  1. sizeConstraint: SizeConstraint 布局的大小调整模式

    默认模式是SetDefaultConstraint。

    • QLayout::SizeConstraint sizeConstraint() const
    • void setSizeConstraint(QLayout::SizeConstraint)
  2. spacing: int 布局中小部件之间的间距

    如果没有显式设置值,则布局的间距从父布局继承,或者从父小部件的样式设置继承。

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

    • int spacing() const
    • void setSpacing(int)

公共函数

构造函数

  • QLayout()
  • QLayout(QWidget *parent)

属性相关

  • QLayout::SizeConstraint sizeConstraint() const
    void setSizeConstraint(QLayout::SizeConstraint)
  • int spacing() const
    void setSpacing(int)

其他

  • QWidget * parentWidget() const 返回该布局的父小部件

    如果该布局没有安装在任何小部件上,则返回nullptr。
    如果布局是子布局,该函数返回父布局的父小部件。

  • bool activate() 如有必要,为parentWidget() 重做布局
    通常不需要调用它,因为它会在最合适的时间自动调用。如果布局被重做,它返回true。

  • void update() 更新parentWidget()的布局
    通常不需要调用它,因为它会在最合适的时间自动调用。

  • bool isEnabled() const
    void setEnabld(bool enable)

  • bool setAlignment(QWidget *w, Qt::Alignment alignment)
    bool setAlignment(QLayout *l, Qt::Alignment alignment)

增删改查

  • virtual void addItem(QLayoutItem *item) = 0
  • void addWidget(QWidget *w)
  • virtual int indexOf(QWidget *widget) const
  • int indexOf(QLayoutItem *layoutItem) const
  • void removeItem(QLayoutItem *item)
  • void removeWidget(QWidget *widget)
  • QLayoutItem * replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOptions options = Qt::FindChildrenRecursively)
  • virtual QLayoutItem * takeAt(int index) = 0
  • virtual int count() const = 0
  • virtual QLayoutItem * itemAt(int index) const = 0

尺寸大小

  • QRect contentsRect() const
  • void getContentsMargins(int *left, int *top, int *right, int *bottom) const
  • QMargins contentsMargins() const
  • void setContentsMargins(int left, int top, int right, int bottom)
  • void setContentsMargins(const QMargins &margins)
  • QWidget * menuBar() const
    void setMenuBar(QWidget *widget)
    告诉几何体管理器将菜单栏小部件放置在parentWidget() 的顶部,QWidget::contentsMargins() 的外部。所有子窗口小部件都放置在菜单栏的下边缘。

重写的公共函数

  • virtual QSizePolicy::ControlTypes controlTypes() const override

    enum QSizePolicy::ControlType
    flags QSizePolicy::ControlTypes

    此枚举根据布局交互指定不同类型的小部件:

    ConstantValueDescription
    QSizePolicy::DefaultType0x00000001默认类型,如果未指定任何类型。
    QSizePolicy::ButtonBox0x00000002QDialogButtonBox实例。
    QSizePolicy::CheckBox0x00000004一个QCheckBox实例。
    QSizePolicy::ComboBox0x00000008QComboBox实例。
    QSizePolicy::Frame0x00000010QFrame实例。
    QSizePolicy::GroupBox0x00000020QGroupBox实例。
    QSizePolicy::Label0x00000040QLabel实例。
    QSizePolicy::Line0x00000080具有QFrame::HLine或QFrame::VLine的QFrame实例。
    QSizePolicy::LineEdit0x00000100QLineEdit实例。
    QSizePolicy::PushButton0x00000200一个QPushButton实例。
    QSizePolicy::RadioButton0x00000400一个QRadioButton实例。
    QSizePolicy::Slider0x00000800QAbstractSlider实例。
    QSizePolicy::SpinBox0x00001000QAbstractSpinBox实例。
    QSizePolicy::TabWidget0x00002000一个QTabWidget实例。
    QSizePolicy::ToolButton0x00004000QToolButton实例。
  • virtual Qt::Orientations expandingDirections() const override

  • virtual QRect geometry() const override

  • virtual void invalidate() override

  • virtual bool isEmpty() const override

  • virtual QLayout * layout() override

  • virtual QSize maximumSize() const override

  • virtual QSize minimumSize() const override

  • virtual void setGeometry(const QRect &r) override

静态公共函数

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

受保护的函数

  • void addChildLayout(QLayout *l)
  • void addChildWidget(QWidget *w)
  • QRect alignmentRect(const QRect &r) const

重写的受保护的函数

  • virtual void childEvent(QChildEvent *e) override

参考

  • 布局管理 Layout Management
  • 基本布局示例 Basic Layouts Example
  • 边框布局示例 Border Layout Example
  • 流式布局示例 Flow Layout Example
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值