QT5入门之29 -布局管理器
2015-11-02 15:19
519 查看
1.布局(Layouts)
窗体上的每个控件都需要有一个合适的尺寸和位置,从而设计出合理、美观的界面。
Qt中有三种方式对窗体上的控件进行布局管理,分别是:绝对布局、手工布局和Qt布局管理器。
2.绝对布局
绝对布局很简单,控件的位置是固定的,控件不会随着窗口大小的变化而变化。
由于控件大小不变,当改变控件标题,文本可能显示不全。
3.手工布局
手工布局中控件的位置是固定的,但是控件的尺寸会随着窗口的大小变化而变化,可以通过重写窗体控件的resizeEvent()实现对子控件的大小的设置。setGeometry
管理窗体上控件最简单的方法就是使用Qt的布局管理器。
4.布局管理器可以使控件的大小随着窗口大小的改变而改变。
Qt Creator有4种布局组件,QHBoxLayout水平布局、QVBoxLayout垂直布局、QGridLayout网格布局、QStackLayout 分组布局。
水平布局:控件按水平方向排列。
垂直布局:控件按垂直方向排列,宽度随垂直布局管理器改变而改变,但是控件高度不变。
Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列。类似于HTML 的table。
可以先拖布局组件,再拖控件;也可以先拖控件。
如果对当前布局不满意,可以将布局管理器整体选中,单击上面工具栏上的“Break Layout”按钮,便可取消布局管理器。
5.间隔器(Spacers)是用来填补空白的控件,在布局管理器中配合使用。
实例:
hboxLayout ,button1 23均是成员变量。
窗体上的每个控件都需要有一个合适的尺寸和位置,从而设计出合理、美观的界面。
Qt中有三种方式对窗体上的控件进行布局管理,分别是:绝对布局、手工布局和Qt布局管理器。
2.绝对布局
绝对布局很简单,控件的位置是固定的,控件不会随着窗口大小的变化而变化。
由于控件大小不变,当改变控件标题,文本可能显示不全。
3.手工布局
手工布局中控件的位置是固定的,但是控件的尺寸会随着窗口的大小变化而变化,可以通过重写窗体控件的resizeEvent()实现对子控件的大小的设置。setGeometry
管理窗体上控件最简单的方法就是使用Qt的布局管理器。
4.布局管理器可以使控件的大小随着窗口大小的改变而改变。
Qt Creator有4种布局组件,QHBoxLayout水平布局、QVBoxLayout垂直布局、QGridLayout网格布局、QStackLayout 分组布局。
水平布局:控件按水平方向排列。
垂直布局:控件按垂直方向排列,宽度随垂直布局管理器改变而改变,但是控件高度不变。
Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列。类似于HTML 的table。
可以先拖布局组件,再拖控件;也可以先拖控件。
如果对当前布局不满意,可以将布局管理器整体选中,单击上面工具栏上的“Break Layout”按钮,便可取消布局管理器。
5.间隔器(Spacers)是用来填补空白的控件,在布局管理器中配合使用。
实例:
hboxLayout ,button1 23均是成员变量。
//创建横向布局 hboxLayout = new QHBoxLayout(); button1 = new QPushButton("按钮1"); button2 = new QPushButton("按钮2"); button3 = new QPushButton("按钮3"); //向布局中添加控件 hboxLayout->addWidget(button1); hboxLayout->addWidget(button2); hboxLayout->addWidget(button3); //间隔 hboxLayout->setSpacing(60); //实例QWidget widget = new QWidget(); //绑定布局 widget->setLayout(hboxLayout);
//创建纵向布局 gridLayout = new QGridLayout(); button1 = new QPushButton("按钮1"); button2 = new QPushButton("按钮2"); button3 = new QPushButton("按钮3"); //向布局中添加控件 //0,0,1,1 行 列 行间距 列间距 gridLayout->addWidget(button1,0,0,1,1); gridLayout->addWidget(button2,0,1,1,1); gridLayout->addWidget(button3,1,0,1,1); //实例QWidget widget = new QWidget(); //绑定布局 widget->setLayout(gridLayout); //绑定界面 this->setCentralWidget(widget);
相关文章推荐
- Qt判断数据库是否已存在某表以及判断某表是否存在某列
- 实现私有化(Pimpl) --- QT常见的设计模式
- 正确使用Qt多线程
- Qt使用自带的windeployqt 查找生成exe 必需的库文件
- qt背景设置
- QThread与QTimer使用注意
- QT5入门之28 -QLineEdit
- PyQt常用控件积累
- QT5入门之27 -QPushButton
- Qt5.5.1移植到freescale imx6
- qradiobutton qbuttongroup
- Qtp 学习视频
- QT基于UDP通信的多线程编程问题
- win10 qtcreator 无法定位程序入口_except1问题
- Qt中父子widget的事件传递
- Qt中的元对象系统
- PyQt4 学习笔记5之对话框
- Qt开发环境安装与软件下载
- MSVC 2013 + Qt 5.4.2 + quazip 0.7.1 的编译及使用
- QT布局