QSplitter 类
QSplitter类实现了一个拆分器小部件。
Header | #include < QSplitter > |
---|---|
qmake | QT += widgets |
Inherits | QFrame |
Inherited By |
详细说明
拆分器允许用户通过拖动子窗口小部件之间的边界来控制它们的大小。任何数量的小部件都可以由单个拆分器控制。QSplitter的典型用法是创建几个小部件并使用insertWidget() 或addWidget() 添加它们。
下面的示例将并排显示QListView、QTreeView和QTextEdit,其中包含两个拆分器句柄:
QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
如果在调用insertWidget() 或addWidget() 时小部件已经在QSpliter中,它将移动到新位置。这可以用于以后在拆分器中重新排序小部件。可以使用indexOf() 、widget() 和count() 访问拆分器中的小部件。
默认的qspliter水平地(并排地) 布局它的子对象;您可以使用setOrientation(Qt::Vertical) 垂直地布局它的子对象。
默认情况下,在小部件的minimumSizeHint() (或minimumSize() ) 和maximumSize() 之间,所有小部件都可以根据用户的意愿变大或变小。
默认情况下,QSpliter动态调整其子级的大小。如果您希望QSpliter仅在调整大小操作结束时调整子对象的大小,请调用setOpaqueResize(false) 。
小部件之间大小的初始分布是通过将初始大小乘以拉伸因子来确定的。还可以使用setSizes() 设置所有小部件的大小。函数size() 返回用户设置的大小。或者,您可以分别使用saveState() 和restoreState() 从QByteArray保存和恢复小部件的大小。
hide() 子对象时,其空间将分布在其他子对象中。当您再次show() 时,它将被恢复。
注意:不支持将QLayout添加到QSplitter(通过setLayout() 或使QSplitter成为QLayout的父级) ;请改用addWidget() (参见上面的示例) 。
属性
-
childrenCollapsible: bool 是否可以将子窗口小部件的大小调整为0
默认情况下,子对象是可折叠的。可以使用setCollapsable() 启用和禁用单个子级的折叠。- bool childrenCollapsible() const
- void setChildrenCollapsible(bool)
-
handleWidth: int 拆分器句柄的宽度
默认情况下,此属性包含的值取决于用户的平台和样式首选项。
如果将handleWidth设置为1或0,则实际的抓取区域将增长到与相应小部件的几个像素重叠。- int handleWidth() const
- void setHandleWidth(int)
-
opaqueResize: bool 移动拆分器时动态调整小部件的大小(不透明),则返回true, 否则返回false
默认的调整大小行为取决于样式(由SH_Splitter_OpaqueResize 样式提示确定)。但是,您可以通过调用setOpaqueResize() 来覆盖它
- bool opaqueResize() const
- void setOpaqueResize(bool opaque = true)
-
orientation: Qt::Orientation 拆分器的方向
默认情况下,方向是水平的(即,小部件并排放置)。可能的方向是Qt::Horizontal 和Qt::Vertical 。- Qt::Orientation orientation() const
- void setOrientation(Qt::Orientation)
公共函数
构造和析构
- QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)
- QSplitter(QWidget *parent = nullptr)
- virtual ~QSplitter()
属性相关
- bool childrenCollapsible() const
- void setChildrenCollapsible(bool)
- int handleWidth() const
- void setHandleWidth(int)
- bool opaqueResize() const
- void setOpaqueResize(bool opaque = true)
- Qt::Orientation orientation() const
- void setOrientation(Qt::Orientation)
修改
- void addWidget(QWidget *widget)
- void insertWidget(int index, QWidget *widget)
- int indexOf(QWidget *widget) const
- QWidget * replaceWidget(int index, QWidget *widget)
- QWidget * widget(int index) const
增删查及修改
- void addWidget(QWidget *widget)
- void insertWidget(int index, QWidget *widget)
- int indexOf(QWidget *widget) const
- QWidget * replaceWidget(int index, QWidget *widget)
- QWidget * widget(int index) const
折叠
- bool isCollapsible(int index) const
- void setCollapsible(int index, bool collapse)
状态
- bool restoreState(const QByteArray &state)
- QByteArray saveState() const
- void refresh()
大小
- QList< int> sizes() const
- void setSizes(const QList< int> &list)
- void setStretchFactor(int index, int stretch)
数量
- int count() const
- void getRange(int index, int *min, int *max) const
拆分器把手
- QSplitterHandle * handle(int index) const
重写的公共函数
- virtual QSize minimumSizeHint() const override
- virtual QSize sizeHint() const override
信号
- void splitterMoved(int pos, int index)
受保护的函数
- int closestLegalPosition(int pos, int index)
- virtual QSplitterHandle * createHandle()
- void moveSplitter(int pos, int index)
- void setRubberBand(int pos)
重写的受保护的函数
- virtual void changeEvent(QEvent *ev) override
- virtual void childEvent(QChildEvent *c) override
- virtual bool event(QEvent *e) override
- virtual void resizeEvent(QResizeEvent *) override