QSplitter 分割器

详细描述

分割器让用户可以用过拖拽子窗口的分界线,来调整各个子窗口的大小。一个分割器可以控制任意数量个widget。分割器典型的用法是创建几个widget,然后用insertWidget()或addWidget()方法添加到分割器。
下面的例子将显示 QListView, QTreeView, and 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);

如果一个widget已经存在于分割器内,当insertSidget()或addWidget()被调用时,会重新移动该widget的位置。这可以用于在分割器中重新排列这些widget。可以使用indexOf(), widget(), 和 count()方法,来访问分割器内的widget。
默认的分割器水平排布它的子部件,可以通过setOrientation(Qt::Vertical)使分割器改为垂直布局子部件。
默认情况下,分割器内的所有widget都可以在其 minimumSize() 和 maximumSize()之间,根据用户意愿任意调整大小。
默认情况下,分割器会动态的调整子部件的大小。如果希望分割器仅在调整大小操作结束时,才调整子部件的大小,通过调用setOpaqueResize(false)来实现。
分割器内各widget之间的初始大小分布是通过将初始大小乘以拉伸系数来确定的。可以用setSize()方法来设置所有widget的大小。sizes()方法返回用户设置的size列表。或者,可以分别使用saveState()和restoreState()从QByteArry保存和恢复widget的大小。
当使用hide()方法隐藏子元素时,它的空间会被重新分配给其他的子元素。在你重新show()时,它将被恢复。
**注:**不允许添加QLayout对象到分割器内(包括使用setLayout()方法,或者设置分割器的父类是QLayout对象),请使用addWiget()方法代替。参考上面的例子

属性说明

源码如下

    Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
    Q_PROPERTY(bool opaqueResize READ opaqueResize WRITE setOpaqueResize)
    Q_PROPERTY(int handleWidth READ handleWidth WRITE setHandleWidth)
    Q_PROPERTY(bool childrenCollapsible READ childrenCollapsible WRITE setChildrenCollapsible)

childrenCollapsible : bool

该属性用于确定用户是否可以将子部件的大小设置到0。
默认情况下,子部件是可折叠的(即大小可以被设置为0)。使用setCollapsible()方法来启用或禁用子部件是否可折叠。
bool childrenCollapsible() const
void setChildrenCollapsible(bool)

handleWidth : int

该属性用于确定分割线的宽度
默认情况下,该属性的值,取决于用户的平台和样式首选项的值。
如果将handleWidth设置为1或0,则实际抓取区域将增长到重叠其各自小部件的几个像素。
int handleWidth() const
void setHandleWidth(int)

opaqueResize : bool

标识在拖拽分割线时,子窗口是否动态调整大小。
默认的调整大小行为以来于样式(由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)

部分成员函数

setStretchFactor:设置widget的拉伸系数

以下代码,第一个widget占分割器大小的2/9,第二个占7/9。

	QSplitter* mainSplitter = new QSplitter(Qt::Horizontal);//新建水平分割器
	QListView *listview = new QListView;
    QTreeView *treeview = new QTreeView;
    splitter->addWidget(listview);
    splitter->addWidget(treeview);
	splitter->setStretchFactor(0, 2); // 设置第一个窗口的拉伸系数为2/9
	splitter->setStretchFactor(1, 7); //

QWidget *QSplitter::replaceWidget(int index, QWidget *widget)

使用给定的widget替换分割器内的对应index的widget。
如果index有效且widget不是该分割器的子部件,返回被替换的widget对象。否则,将返回null,并且不进行替换或添加。
新的widget的几何形状,与被它替换的那个widget的几何形状相同,可见和崩溃属性,也会继承下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值