Linux中管理子窗口部件的布局一共有三种方法,绝对位置,人工布局还有布局管理器法。
绝对位置法最原始,通过对窗体的各个子窗口部件分配固定的大小和位置以及对窗体分配固定的大小实现,有着很多缺点。一般不采用。
人工布局法尽管还需要给定窗口部件的绝对位置,但是利用人工布局给定的大小总是可以和窗口的大小成比例。但仍然存在文本被截断的危险。
最后要用的是布局管理器:
最为重要的三种布局管理器是QHBoxLayout,QVBoxLayout以及QGridLayout。
1.
QHBoxLayout是基于水平方向的布局,QVBoxLayout是基于竖直方向的布局。而QGridLayout是基于二维单元格
在addWidget中有四个参数,其中最后两个参数表示占用的行数和列数,不写的话两个参数默认为1.
2.
分组布局:
QStackedLayout类可以对一组子窗口进行摆放,或者对它们进行“分页”,而且一次只显示一个,而把其他子窗口部件或者分页隐藏起来。
分页从0开始编号,可以用setCurrentIndex来使某个特定的子窗口部件可见,indexOf()可以获取子窗口部件的页号。
使用Qt设计师更为方便。
3.切分窗口
QSplitter就是一个可以包含一些其他窗口部件的窗口部件,它们会通过切分条分隔开来,用户也可以通过拖动切分条来改变切分窗口部件的大小。
其与布局管理器不同的是,布局管理器只是简单地摆放并没有可见的外形,而QSplitter在使用的时候可以像其他窗口部件一样使用。
QTextEdit *editor1 = new