C++ Qt开发——元对象系统&布局管理器
元对象系统
Qt5元对象系统提供了对象间的通信机制(信号和槽)、运行时类型信息和动态属性系统的支持,是标准C++的一个扩展,它使αt能够更好地实现GUI图形用户界面编程。Qt5的元对象系统不支持C++模板,尽管该模板扩展了标准C++的功能。但是,元对象系统提供了模板无法提供的一些特性。Qt5元对象系统基于以下三个事实。
(1)基类 QObject:任何需要使用元对象系统功能的类必须继承自 QObject
(2) Q_OBJECT宏: Q OBJECT宏必须出现在类的私有声明区中,用于启动元对象的特性。
(3)元对象编译器( Meta-Object Compiler,moc):为 QObject子类实现元对象特性提供必要的代码实现。
布局管理器
在设计较复杂的GUI用户界面时,仅通过指定窗口部件的父子关系以期达到加载和排列窗口部件的方法是行不通的,最好的办法是使用Qt提供的布局管理器。
QGridLayout *mainLayout=new QGridLayout (this); //a
mainLayout->addwidget(label1,0, 0); //b
mainLayout->addwidget(lineEdit, 0,1);
mainLayout->addwidget(label2, 1, 0);
mainLayout->addwidget(button, 1, 1);
setLayout(mainLayout); //c
CSDN QT开发文章推荐:Qt开发必备技术栈学习路线和资料
其中,
QGridLayout *mainLayout= new QGridLayout(this):创建一个网格布局管理器对象mainLayout,并用this指出父窗口。
mainLayout-> addwidget():分别将控件对象 label1, lineEdit、label2和 button放置在布局管理器中,还可以在创建布局管理器对象时不必指明父窗口。
QWidget::setLayout(…)}:将布局管理器添加到对应的窗口部件对象中。因为这里的主窗口就是父窗口,所以直接调用 setLayout(main Layou)即可。
在Qt Creater的这个位置,有四种布局模式。
将第一个Vertical layout拖入编辑器,再拖入四个button。效果如下:
其他的不再赘述。用法一样。
点击布局的框架,layout的参数在下面可以调节。
layoutName——布局名称
layoutleftmargin——右边的边距 top、right、bottom分别是顶,左,底部。
layoutspacing——调节布局里面的元素间的距离
layoutstretch——是调整控件比例的
例如: Layout里面放了三个控件,layoutstretch里面的初始值为0,0,0,意思是三个控件的比例是1:1:1;放两个控件,layoutstretch里面的值为2,3,意思是三个控件的比例是2:3。
layoutsizeconstraint——
设置为QLayout.SetDefaultConstraint时,最大没有限制,当然是窗口本身没有设置尺寸策略的情况下。
设置为QLayout.SetNoConstraint时,窗口可以无限放大和缩小;
设置为QLayout.SetMinimumSize时,与设置为QLayout.SetDefaultConstraint时效果相同,且似乎不受窗口大小策略的影响;
设置为QLayout.SetMaximumSize时,可以无限放大(应该是最大尺寸过大导致感觉不到),在窗口未设置大小策略时可以无限小,但当窗口设置有大小策略时,会受到大小策略的影响;
设置为SetFixedSize时,窗口大小固定不变,且似乎不受大小策略影响。
设置为SetNoConstraint时,窗口大小可以随意调节,但受大小策略的影响。
本文福利, 免费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓
相关文章
- Qt-C2429:语言功能"嵌套命名空间定义"需要编译器标志"/std:c++latest"
- Qt-在WIN10上实现毛玻璃效果(Aero效果,是C++语法)
- 【C/C++学院】(19)QT版:记事本
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制
- Qt坐标系统
- Qt 使用QGraphicsItem绘制复杂的图形
- Qt css样式大全(整理版)
- C/C++ Qt 常用数据结构
- Qt函数体怎么使用
- C++Qt高级——QMake快速入门
- QT+QT creator+OpenCV图像灰度化
- C++QT实现压缩文件、文件夹和解压缩操作
- C++QT开发——QWidget
- Mac上Qt安装和配置教程
- QT信号槽机制
- Qt之QPropertyAnimation实现弹窗动画优化版
- QT之QCombox文字内容默认居中
- Qt 可拖拽的QTextEdit(整理别人的)
- QT在构造函数中退出程序
- Qt QTabWidget和QtabBar的区别
- Qt QSS美化 基础知识
- QT-Valgrind内存分析
- Qt开发MQTT(一) 之Qt官方Qt MQTT
- Qt中纯C++项目发布为dll的方法(超详细步骤)
- C/C++、Qt开发,跨平台CMake判断当前平台是Linux还是Windows,操作系统判断