Qt中的QBoxLayout
文章目录
- 1 Qt中的QBoxLayout
- 1.1 QBoxLayout
- 1.2 布局管理器的嵌套
1 Qt中的QBoxLayout
1.1 QBoxLayout
QBoxLayout布局管理器:
- 以水平或者垂直的方式管理界面组件。
布局管理器中的比例系数:
- 默认情况下以等比例的方式更新组件的大小。
- 可以自定义组件大小更新时的比例系数。
QBoxLayout中的比例系数设置:
注意: 组件的初始大小是独立于布局管理器设置的,因此不能保证组件的大小始终符合比例系数的设置。
垂直布管理器示例代码:
void Widget::testVBoxLayout()
{QVBoxLayout* layout = new QVBoxLayout();TestBtn1.setText("Test Button 1");TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn1.setMinimumSize(160, 30);TestBtn2.setText("Test Button 2");TestBtn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn2.setMinimumSize(160, 30);TestBtn3.setText("Test Button 3");TestBtn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn3.setMinimumSize(160, 30);TestBtn4.setText("Test Button 4");TestBtn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn4.setMinimumSize(160, 30);layout->setSpacing(30);layout->addWidget(&TestBtn1);layout->addWidget(&TestBtn2);layout->addWidget(&TestBtn3);layout->addWidget(&TestBtn4);layout->setStretch(0, 1);layout->setStretch(1, 1);layout->setStretch(2, 2);layout->setStretch(3, 2);setLayout(layout);
}
水平布局管理器示例代码:
void Widget::testHBoxLayout()
{QHBoxLayout* layout = new QHBoxLayout();TestBtn1.setText("Test Button 1");TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn1.setMinimumSize(160, 30);TestBtn2.setText("Test Button 2");TestBtn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn2.setMinimumSize(160, 30);TestBtn3.setText("Test Button 3");TestBtn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn3.setMinimumSize(160, 30);TestBtn4.setText("Test Button 4");TestBtn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn4.setMinimumSize(160, 30);layout->setSpacing(30);layout->addWidget(&TestBtn1);layout->addWidget(&TestBtn2);layout->addWidget(&TestBtn3);layout->addWidget(&TestBtn4);layout->setStretchFactor(&TestBtn1, 1);layout->setStretchFactor(&TestBtn2, 2);layout->setStretchFactor(&TestBtn3, 1);layout->setStretchFactor(&TestBtn4, 3);setLayout(layout);
}
1.2 布局管理器的嵌套
布局管理器可以相互嵌套,形成更加复杂的布局方式:
- 布局嵌套几乎可以完成所有常用的界面布局。
- 自定义布局类可以达到个性化界面布局的效果。
QBoxLayout嵌套实例:
布局管理器的相互嵌套示例代码:
void Widget::testVHBoxLayout()
{QHBoxLayout* hLayout1 = new QHBoxLayout();QHBoxLayout* hLayout2 = new QHBoxLayout();QVBoxLayout* vLayout = new QVBoxLayout();TestBtn1.setText("Test Button 1");TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn1.setMinimumSize(160, 30);TestBtn2.setText("Test Button 2");TestBtn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn2.setMinimumSize(160, 30);hLayout1->setSpacing(10);hLayout1->addWidget(&TestBtn1);hLayout1->addWidget(&TestBtn2);TestBtn3.setText("Test Button 3");TestBtn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn3.setMinimumSize(160, 30);TestBtn4.setText("Test Button 4");TestBtn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);TestBtn4.setMinimumSize(160, 30);hLayout2->setSpacing(10);hLayout2->addWidget(&TestBtn3);hLayout2->addWidget(&TestBtn4);vLayout->setSpacing(10);vLayout->addLayout(hLayout1);vLayout->addLayout(hLayout2);vLayout->setStretchFactor(hLayout1, 1);vLayout->setStretchFactor(hLayout2, 3);setLayout(vLayout);
}
思考一个问题:当使用了布局管理器后,如何设置组件的初始化大小呢?
参考资料:
- QT实验分析教程
Qt中的QBoxLayout相关推荐
- QT 中QTimer 和 startTimer()的区别
最需要注意一点 请注意,QTimer的准确性取决于底层操作系统和硬件.timerType参数允许您自定义计时器的准确性.有关不同计时器类型的信息,请参见Qt::TimerType.大多数平台支持20毫 ...
- QT 中使用 OpenCv 的 CascadeClassifier 报错
问题 在 QT 中调用 OpenCv 的 CascadeClassifier 进行人脸框检测的时候,在构造函数中进行检测器的初始化,随后调用相机读取图片的时候就会报错,报的错误是 Segment Fa ...
- 【Qt】Qt中使用ssl时报错:qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
一.问题 在Qt中使用https,运行时报错: qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method 二.原因分析 SSLv2由 ...
- Qt中两种定时器用法
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. 1.QObject类的定时器 QObj ...
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- Qt中使用多线程的一些心得(一)——继承QThread的多线程使用方法
一 前言 二Qt多线程方法一 继承QThread 2.1使用多线程的原因分析 2.2 写一个继承于QThread的线程 三 总结 一 前言 本篇文章部分内容参考了该博文:传送门. Qt中有两种 ...
- C++中的stack类、QT中的QStack类
C++中的stack 实现一种先进后出的数据结构,是一个模板类. 头文件 #include<stack> 用法(以int型为例): stack <int> s; //定义一个i ...
- Qt中不规则窗体和部件的实现
Qt中不规则窗体和部件的实现 描述:a.png 窗口背景图 图片: 描述:mask.png 窗口掩码图 图片: 描述:toolbutton.png 按钮背景图 图片: 描述:toolbutton_ma ...
- QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置
QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 参考文章: (1)QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 (2)https:// ...
最新文章
- 接口是什么意思_程序员天天用却不懂得冷知识,这两句口诀,让你理解RESTful接口...
- AngularJs 基础教程​ —— Select(选择框)
- Linux 防火墙命令的操作命令CentOS
- 线程同步锁 java_java多线程同步之重入锁,详细解析
- redis基本命令list
- xp 设备管理器 android,XP设备管理器怎么打开?
- java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF
- 新玩法来了,web前端教程公众号推出《每日一题》
- 红皮书--调试及修复
- div和span标签(HTML)
- 线段树——I hate it
- HIVE中常见文件存储格式比较
- Phase2 Day11 Set Map
- Android Layout 布局属性全解
- DCOM配置出错: 不小心删除DCOM配置中,“我的电脑”属性的Everyone权限导致......
- ABAP里面的OCCURS与HEADER LINE之间的一些区别
- [SAP ABAP开发技术总结]增强Enhancement
- bzoj3123【SDOI2013】森林
- Adobe acrobat修改批注名字
- 高德地图之添加遮盖物
热门文章
- android到顶部,Android recyclerview滚动到顶部
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第6章-一阶时滞多智能体系统分组一致性
- python基础1(来自廖雪峰的官方网站)
- 计算机课四年级说课稿,小学信息技术说课稿
- 雷达篇(九)雷达中的“快采样”和“慢采样”
- 阿里巴巴成立首个IoT生态联盟 将打通技术标准
- spring-retry----线程内重试
- Swift - static和class的使用
- SQLServer表内自关联级联删除
- 键盘样式风格有关设置-iOS开发