管理器Widgets(04):【类】QSplitter [官翻]

QSplitter 类

QSplitter类实现了一个拆分器小部件。

Header#include < QSplitter >
qmakeQT += widgets
InheritsQFrame
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() (参见上面的示例) 。

属性

  1. childrenCollapsible: bool 是否可以将子窗口小部件的大小调整为0
    默认情况下,子对象是可折叠的。可以使用setCollapsable() 启用和禁用单个子级的折叠。

    • bool childrenCollapsible() const
    • void setChildrenCollapsible(bool)
  2. handleWidth: int 拆分器句柄的宽度
    默认情况下,此属性包含的值取决于用户的平台和样式首选项。
    如果将handleWidth设置为1或0,则实际的抓取区域将增长到与相应小部件的几个像素重叠。

    • int handleWidth() const
    • void setHandleWidth(int)
  3. opaqueResize: bool 移动拆分器时动态调整小部件的大小(不透明),则返回true, 否则返回false

    默认的调整大小行为取决于样式(由SH_Splitter_OpaqueResize 样式提示确定)。但是,您可以通过调用setOpaqueResize() 来覆盖它

    • bool opaqueResize() const
    • void setOpaqueResize(bool opaque = true)
  4. orientation: Qt::Orientation 拆分器的方向
    默认情况下,方向是水平的(即,小部件并排放置)。可能的方向是Qt::Horizontal 和Qt::Vertical 。

    • Qt::Orientation orientation() const
    • void setOrientation(Qt::Orientation)

公共函数

构造和析构

  1. QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)
  2. QSplitter(QWidget *parent = nullptr)
  3. virtual ~QSplitter()

属性相关

  1. bool childrenCollapsible() const
  2. void setChildrenCollapsible(bool)
  3. int handleWidth() const
  4. void setHandleWidth(int)
  5. bool opaqueResize() const
  6. void setOpaqueResize(bool opaque = true)
  7. Qt::Orientation orientation() const
  8. void setOrientation(Qt::Orientation)

修改

  1. void addWidget(QWidget *widget)
  2. void insertWidget(int index, QWidget *widget)
  3. int indexOf(QWidget *widget) const
  4. QWidget * replaceWidget(int index, QWidget *widget)
  5. QWidget * widget(int index) const

增删查及修改

  1. void addWidget(QWidget *widget)
  2. void insertWidget(int index, QWidget *widget)
  3. int indexOf(QWidget *widget) const
  4. QWidget * replaceWidget(int index, QWidget *widget)
  5. QWidget * widget(int index) const

折叠

  1. bool isCollapsible(int index) const
  2. void setCollapsible(int index, bool collapse)

状态

  1. bool restoreState(const QByteArray &state)
  2. QByteArray saveState() const
  3. void refresh()

大小

  1. QList< int> sizes() const
  2. void setSizes(const QList< int> &list)
  3. void setStretchFactor(int index, int stretch)

数量

  1. int count() const
  2. void getRange(int index, int *min, int *max) const

拆分器把手

  1. QSplitterHandle * handle(int index) const

重写的公共函数

  1. virtual QSize minimumSizeHint() const override
  2. virtual QSize sizeHint() const override

信号

  1. void splitterMoved(int pos, int index)

受保护的函数

  1. int closestLegalPosition(int pos, int index)
  2. virtual QSplitterHandle * createHandle()
  3. void moveSplitter(int pos, int index)
  4. void setRubberBand(int pos)

重写的受保护的函数

  1. virtual void changeEvent(QEvent *ev) override
  2. virtual void childEvent(QChildEvent *c) override
  3. virtual bool event(QEvent *e) override
  4. virtual void resizeEvent(QResizeEvent *) override
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值