第四章 布局管理——Qt

一、布局管理系统

若部件上设置了布局管理器,那么它会完成以下几种任务:

定位子部件;
感知窗口默认大小;
感知窗口最小大小;
改变大小处理;
当内容改变时自动更新:
	字体大小,文本或子部件的其他内容随之改变;
	隐藏或显示子部件;
	移除一个子部件。

1.QBoxLayout(基本布局管理器)
可以使子部件在水平方向或者垂直方向排成一列,它将所有的空间分成一行盒子,然后将每个部件放入一个盒子中。
它有两个子类QHBoxLayout水平布局管理器和QVBoxLayout垂直布局管理器。

布局管理器的几个属性:
	属性			         说明
	layoutName               现在所使用的布局管理器的名称
	layoutLeftMargin         设置布局管理器到界面左边界的距离
	layoutTopMargin        	 设置布局管理器到界面上边界的距离
	layoutRightMargin        设置布局管理器到界面右边界的距离
	layoutBottomMargin       设置布局管理器到界面下边界的距离
	layoutSpacing            布局管理器中各个子部件间的距离
	layoutStretch            伸缩因子
	layoutSizeConstraint   	 设置大小约束条件

2.QGridLayout(栅格布局管理器)
使部件在网格中进行布局,它将所有的空间分隔成一些行和列,行和列的交叉处就形成了单元格,然后将部件放入一个确定的单元格中。

3.QFormLayout(窗体布局管理器)
用来管理表单的输入部件和与它们相关的标签。窗体布局管理器将它的子部件分为两列,左边是一些标签,右边是一些输入部件。

4.QStackedLayout(栈布局管理器)
将一个子布局管理器放入主布局。
5.设置部件大小:
只要是继承自QWidget的类都有以下两个属性:
大小提示:siziHint() 保存部件的建议大小信息 ->通过函数可获取
最小大小提示:minimumSizeHint() 保存部件的建议最小大小信息 ->通过函数可获取

6.大小策略(sizePolicy)属性

常量							描述
QSizePolicy::Fixed				只能使用sizeHint()提供的值,无法伸缩
QSizePolicy::Minimum			siziHint()提供的大小是最小的,部件可以被拉伸
QSizePolicy::Maximum			sizeHint()提供的是最大大小,部件可以被压缩
QSizePolicy::Preferred			sizeHint()提供的大小是最佳大小,可以拉伸可以压缩
QSizePolicy::Expanding			sizeHint()提供的是合适的大小,部件可以被压缩,不过更倾向于拉伸来获得更多的空间
QSizePolicy::MinimumExpanding	sizeHint()提供的大小是最小的,部件倾向于被拉伸来获取更多的空间
QSizePolicy::Ignored			sizeHint()的值被忽略,部件将尽可能的被拉伸来获取更多的空间

7.伸缩因子
用来设置部件间的比例。
在代码中,可以在使用布局管理器的addWidget()函数添加部件的同时,在第二个参数中指定伸缩因子。

8.可扩展窗口
用来隐藏或者显示多余的内容。子部件隐藏时,布局管理器自动缩小,当子部件重新显示时,布局管理器再次放大。
要设置pushButton的属性栏中选中checkable选项。

如:
	void MyWidget::on_pushButton_toggled(bool checked)// 显隐窗口按钮
	{
		ui->textEdit->setVisible(checked); // 设置文本编辑器的显示和隐藏
		if(checked) ui->pushButton->setText(tr("隐藏可扩展窗口"));
		else ui->pushButton->setText(tr("显示可扩展窗口"));
	}

9.分裂器(QSplitter)
可以随着分裂器的大小变化而进行相应大小变化的。

二、设置伙伴

QLineEdit* ageLineEdit = new QLineEdit(this);
QLabel* ageLabel = new QLabel("&Age",this);//'&'字符后面跟着的第一个字符即快捷键 (eg..Alt + A)
ageLabel->setBuddy(ageLineEdit);

三、设置Tab键顺序

QWidget::setTabOrder();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值