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
Constant | Value | Description |
---|---|---|
QLayout::SetDefaultConstraint | 0 | 主部件的最小大小设置为minimumSize(),除非该部件已经有一个最小大小。 |
QLayout::SetNoConstraint | 1 | 小部件不受限制。 |
QLayout::SetMinimumSize | 2 | 主部件的最小大小设置为minimumSize();不能再小了。 |
QLayout::SetFixedSize | 3 | 主部件的大小设置为sizeHint();它根本不能调整大小。 |
QLayout::SetMaximumSize | 4 | 主部件的最大尺寸设置为maximumSize();不能再大了。 |
QLayout::SetMinAndMaxSize | 5 | 主部件的最小大小设置为minimumSize(),最大大小设置为maximumSize()。 |
属性
-
sizeConstraint: SizeConstraint 布局的大小调整模式
默认模式是SetDefaultConstraint。
- QLayout::SizeConstraint sizeConstraint() const
- void setSizeConstraint(QLayout::SizeConstraint)
-
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此枚举根据布局交互指定不同类型的小部件:
Constant Value Description QSizePolicy::DefaultType 0x00000001 默认类型,如果未指定任何类型。 QSizePolicy::ButtonBox 0x00000002 QDialogButtonBox实例。 QSizePolicy::CheckBox 0x00000004 一个QCheckBox实例。 QSizePolicy::ComboBox 0x00000008 QComboBox实例。 QSizePolicy::Frame 0x00000010 QFrame实例。 QSizePolicy::GroupBox 0x00000020 QGroupBox实例。 QSizePolicy::Label 0x00000040 QLabel实例。 QSizePolicy::Line 0x00000080 具有QFrame::HLine或QFrame::VLine的QFrame实例。 QSizePolicy::LineEdit 0x00000100 QLineEdit实例。 QSizePolicy::PushButton 0x00000200 一个QPushButton实例。 QSizePolicy::RadioButton 0x00000400 一个QRadioButton实例。 QSizePolicy::Slider 0x00000800 QAbstractSlider实例。 QSizePolicy::SpinBox 0x00001000 QAbstractSpinBox实例。 QSizePolicy::TabWidget 0x00002000 一个QTabWidget实例。 QSizePolicy::ToolButton 0x00004000 QToolButton实例。 -
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