(十二)分割窗口

QSplitter类:

1、QSplitter继承自QFrame,因此QSplitter也属于容器组件

2、QSplitter将加入其中或将以其为父组件的子窗口组件通过分隔条分割

3、QSplitter中的子窗口部件会按照加入或创建的顺序排放(从左到右/从上到下)

3、用户可以拖动分隔条来改变子窗口组件的大小

 

一般直接将QSplitter对象作为顶级组件(窗口)使用

QSplitter的几个函数:

QSplitter ( Qt::Orientation orientation, QWidget * parent = 0 )

参数orientation如果取Qt::Horizontal将会水平分隔(子组件左右排布)组件,Qt::Vertical将会竖直分隔(子组件上下排布)组件,参数parent 指定父组件,父组件为0时作顶级组件使用,此参数也可以是其他的QSplitter对象

 

void

setOpaqueResize ( bool opaque = true )

参数opaque 用于设置分隔条是否实时更新,为true时分隔条实时位于鼠标拖动的位置,为false时在拖动的时候只有一条虚线随着鼠标移动,鼠标释放时分隔条更新位置

 

void

setStretchFactor ( int index, int stretch )

参数index为子组件的位置,根据排布方式来决定,下标为0的组件为最左/最上的组件,参数指stretch 定位置为index的子组件的伸展系数

注:当水平分隔时,仅指定index处的子组件的伸展系数时,如果水平拉伸分割器,未设置伸展系数的子组件大小不变,竖直时竖直拉伸分割器也是同样的效果

 

例子:

#include <QtGui/QApplication>  
#include "Widget.h"  
#include <QSplitter>  
#include <QTextEdit>  
int main(int argc, char *argv[])  
{  
   QApplication a(argc, argv);  
   QFont font("ZYSong18030",12);  
   
   a.setFont(font); 
   
   //主splitter,其中包含一个QTextEdit一个子splitter  
   QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);  
   QTextEdit *textLeft=new QTextEdit("Left Widget",splitterMain);  
   textLeft->setAlignment(Qt::AlignCenter);  
   
   QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);  
   splitterRight->setOpaqueResize(false);
   
   //在子splitter上添加两个QTextEdit  
   QTextEdit*textTop=new QTextEdit("Right Top Widget",splitterRight);  
   textTop->setAlignment(Qt::AlignCenter);  
   QTextEdit *textBottom=new QTextEdit("Right BottomWidget",splitterRight);  
   textBottom->setAlignment(Qt::AlignCenter);  
   
   //设置主splitter属性  
   splitterMain->setStretchFactor(0,1);  
   splitterMain->setWindowTitle("Splitter");  
   splitterMain->show();  
   
   return a.exec();  
}



 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值