Qt布局管理

来源:互联网 发布:黑客使用什么软件 编辑:程序博客网 时间:2024/04/29 18:23

来源:http://blog.csdn.net/lastsoup/article/details/7028243

 

设计软件中各个部件的位置排列,有两种方法:

1.设置widget的在父窗体中的坐标和大小

widget->move(x,y);

widget->resize(width,height);

//widget->setGeometry(QRect(x,y,width,height));

什么时候用:不想被布局约束,对这种控件可控制时

例如下面的可活动按钮

缺点:在遇到很多个部件时,一个个算坐标会很麻烦

部件不自动随父窗体的变化而变化(这里要重写resizeEvent事件算变化比例建立父子窗体之间的联系,而布局很容易做到)

 

2.布局管理Layout(可控制的部件不要使用布局中,一旦改变会影响到整体布局)

经常要用到的三个布局部件

QHBoxLayout水平布局

QVBoxLayout垂直布局

QGridLayout表格布局

 

————————————————————————————————

QHBoxLayout和QVBoxLayout用法相同

基本:

vlayout->addWidget(w1);

vlayout->addWidget(w2);

……

——————————————————————————————————

QGridLayout用法

layout->addWidget(widget,row,column,rowSpan,columnSpan);

layout->addLayout(layout,row,column,rowSpan,columnSpan);

(row,column):控件占据左上角的单元格位置

rowSpan:控件占据的行数

columnSpan:控件占据的列数(不写默认为1)

——————————————————————————————

控件随窗体伸缩

将布局与主窗体建立联系

layout=new QHBoxLayout(this);

或者this->setLayout(layout);

——————————————————————————————

layout->addStretch();可伸缩的空间

layout->setAlignment(Qt::AlignHCenter);//布局内控件水平居中 

layout->setSpacing(10);//控件间隔为10

layout->setMargin(10);//页边距为10

Qt设计器中spacer控件

以上在对控件位置调整时常用

 

——————————————————————————————————

结合SizePolicy属性控制布局管理中的控件的尺寸自适应方式

也就是控件随主窗体伸缩方式(可自行增大或缩小)

QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//可自行增大和收缩

Fixed:不能放大或缩小

Minimum:不能小于sizeHint尺寸,可放大(若设置了最大尺寸)

Maximum:不能放大,可缩小到允许的最小尺寸(若setMinimumSize(10,10)只能缩小到(10,10))

Preferred:控件的sizeHint是他的Hint,可以放大或缩小

 

————————————————————————————————————————————

比例因子的使用

例:布局中有左右两控件,右边比左边水平伸缩2倍

sizePolicy.setHorizontalStretch(1);
sizePolicy.setVerticalStretch(0);

left->setSizePolicy(sizePolicy);

sizePolicy.setHorizontalStretch(2);
sizePolicy.setVerticalStretch(0);

left->setSizePolicy(sizePolicy);

 

水平伸展比例(1,2)

垂直伸展比例(0,0)

——————————————————————————————————————————————————

布局顾名思义是对控件的位置的整体规划,每个控件之间都存在着位置关系,所以改变控件(移动、关闭)会破坏布局

——————————————————————————————————————————————————

结论:两种方法结合使用,应该可以应对大部分界面布局

本人是菜鸟,实践不多,如有错误欢迎指正

—————————————————————————————————————————————————

上述代码是为了理解布局使用,Qt设计器可实现

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信清理数据后不能登录了怎么办 k歌占内存又不想删除歌曲怎么办 把所有商品放在一起做链接怎么办 微信解冻短信验证总显示失败怎么办 淘金币能抵钱商家拿了淘金币怎么办 真实订单被系统判定虚假交易怎么办 淘宝买家号疑似虚假交易违规怎么办 货品交易一方收了定金违约了怎么办 饿了么店铺收到差评怎么办 淘宝顾客退款没成功给差评怎么办 身份证绑定了淘宝注册支付宝怎么办 把钱转错到支付宝账号被扣了怎么办 网上买东西收到信息被删掉了怎么办 表格在手机上显示不出来怎么办? 电子表格中复制后没有虚线框怎么办 word中页眉页脚横线短了怎么办 亿图图示画的图不显示怎么办 掌柜宝用了几天无法登录了怎么办 手机千牛消息不小心删除了怎么办 淘宝账号被冻结提示无法恢复怎么办 商家未发货我误点了确认收货怎么办 淘宝买货商家不发货也不退款怎么办 商家没发货点成收货了怎么办 淘宝新店上架产品未通过审核怎么办 安卓手机电池虚电怎么办_查查吧 拼多多拼单期间商家下架商品怎么办 微信绑别人的卡需要人脸认证怎么办 支付宝把钱转到了停用的账号怎么办 我注册征信账号忘记了要怎么办 客户说考虑考虑我该怎么办招商类 浴巾用久了黑黑的洗不干净怎么办 wifi密码被别人改了怎么办啊 苹果手机更新后账号密码忘了怎么办 专项预审批额度额度时效了怎么办 id密码和id码丢了怎么办 手机卡丢了id密码忘了怎么办 不想叫爱派登录我的微信怎么办 pr中素材与新建序列不匹配怎么办 淘宝客户收到货不承认要退款怎么办 淘宝包邮店铺 新疆地区拍怎么办 唯品会换货上门但自己寄了怎么办