QT Creator快速入门读书笔记:新建HelloWorld工程
窗口部件
QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,QWidget类是所有用户界面对象的基类,被称为基础窗口部件。QWidget继承自QObject类和QPaintDevice类,其中,QObject类是所有支持Qt对象模型的对象的基类,QPaintDevice类是所有可以绘制对象的基类。
新建Qt Widgets应用
新建HelloworldDialog类,基类QDialog。在Qt Creator的编辑模式下双击项目文件列表中界面文件分类下的helloworlddialog.ui,进入设计模式。从部件列表中找到Label部件,然后按住鼠标左键将它拖到主设计区的界面上,再双击它进入编辑状态后输入“Hello World!”字符串。
helloworld.pro该文件是项目文件,其中包含了项目相关信息。helloworlddialog.h该文件是新建的HelloworldDialog类的头文件。helloworlddialog.cpp该文件是新建的HelloworldDialog类的源文件。helloworlddialog.ui该文件是设计师设计的界面对应的界面文件。
Ui_HelloworldDialog类是由Qt用户界面编译器针对UI界面编译生成的。这个类包含了QLabel指针和void setupUi(QDialog *HelloworldDialog)
以及void retranslateUi(QDialog *HelloworldDialog)
函数。
在命名空间中,可以看到HelloworldDialog继承自这个Ui_HelloworldDialog类。
在helloworlddialog.h头文件中可以看到HelloworldDialog也继承自QDialog类,这是我们建立工程时设置的。类里有一个私有变量,其指向自己类型的对象。
其构造和析构函数的实现如下所示:
在构造函数中setupUi是其父类Ui_HelloworldDialog的方法,用于建立UI。
直接使用代码实现
直接添加main.cpp文件,这里的代码需要QApplication、QDialog和QLabel这3个类。QDialog在helloworlddialog.h头文件中已经包含了。通过QDialog实例化一个对话框界面。新建一个QLabel对象,并将QDialog对象作为参数,表明对话框是它的父窗口,也就是说这个标签放在对话框窗口中。在默认情况下,新建的可视部件对象都是不可见的,要使用show函数让它们显示出来。QApplication对象的exec进入事件循环,这样Qt应用程序运行时便可以接收产生的事件。
使用.ui文件
在模板中选择Qt中的Qt Designer Form,在选择界面模板时选择Dialog without Buttons项,单击下一步,将文件名称改为hellodialog.ui。ui文件其实是XML文件,里面是界面部件的相关信息。
由ui文件生成的ui_hellodialog.h头文件,下面是具体内容。是由Qt用户界面编译器5.9.9生成的代码,并且手动对该文件改动,再次编译ui文件时会丢失。
setupUi()函数用来生成界面,因为当时选择模板时使用的是对话框,所以现在这个函数的参数是QDialog类型的。第29行和30行设置了对话框的对象名称。第31行设置了窗口的带下。第32-34行在对话框上创建了标签对象,并设置了它的对象名称、大小和位置。第36行调用了retranslateUi()函数,这个函数在第41-45行进行了定义,实现了对窗口里的字符串进行编码转换的功能。第38行调用了QMetaObject类的connectSlotsByName()静态函数,使得窗口中的部件可以实现按对象名进行信号和槽的关联。
这里的HelloDialog是ui_hellodialog.h头文件中定义的继承自Ui_HelloworldDialog的类。
布局管理器
Qt主要提供QLayout类及其子类作为布局管理器,它们可以实现常用的布局管理功能。Qt的布局管理关系提供了强大的机制来自动排列窗口中的所有部件,确保它们有效地使用空间。
所有QWidget的子类的实例(对象)都可以使用布局管理器管理位于它们之中的子部件,QWidget::setLayout()函数可以在一个部件上应用布局管理器。一旦一个部件上设置了布局管理器,那么它会完成以下几种任务:定位子部件;感知窗口默认大小;感知窗口最小大小;窗口大小变化时进行处理;当内容改变时自动更新(字体大小、文本或子部件的其他内容随之改变,隐藏或显示子部件,溢出一个子部件)
QLayout类是布局管理器的基类,是一个抽象基类,继承自QObject和QLayoutItem类,QLayoutItem类提供了一个供QLayout操作的抽象项目。QLayout和QLayoutItem都是都是在设计自己的布局管理器时才使用的,一般只需要使用QLayout的几个子类即可。它们分别是QBoxLayout(基本布局管理器)、QGridLayout(栅格布局管理器)、QFormLayout(窗体布局管理器)和QStackedLayout(栈布局管理器)。
基本布局管理器
基本布局管理器QBoxLayout类可以使子部件在水平方向或者垂直方向排成一列,它将所有的空间分成一行盒子,然后将每个部件放入一个盒子中。它有两个子类QHBoxLayout水平布局管理器和QVBoxLayout垂直布局管理器。
栅格布局管理器
栅格布局管理器QGridLayout类使部件在网格中进行布局,它将所有的空间分隔成一些行和列,行和列的交叉处形成了单元格,然后将部件放入一个确定的单元格中。
窗体布局管理器
窗体布局管理器QFormLayout类用来管理表单的输入部件以及与它们相关的标签。窗体布局管理器将它的子部件分为两列,左边是一些标签,右边是一些输入部件,比如行编辑器或者数字选择框等。
QT Creator快速入门读书笔记:新建HelloWorld工程
QT Creator快速入门读书笔记:窗口部件初探
QT Creator快速入门读书笔记:新建HelloWorld工程相关推荐
- QT Creator快速入门读书笔记:窗口部件初探
QWidget基础窗口部件 Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样.QMainWindow和大量的QDialog子类是最一般的窗口 ...
- Qt Creator快速入门(第3版)
第1章Qt Creator简介 可以参考Qt开源社区(www.qter.org) 打开文件所在的文件夹: Ctrl+ Tab快捷键,可以在多个打开的文档切换 帮助里面的: 书签:Ctrl十 M ...
- QT Creator 快速入门教程 读书笔记(一)
一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌 ...
- 《Qt Creator快速入门(第3版)》
第1章Qt Creator简介 可以参考Qt开源社区(www.qter.org) 打开文件所在的文件夹: Ctrl+ Tab快捷键,可以在多个打开的文档切换 帮助里面的: 书签:Ctrl十 M 第2 ...
- QT Creator 快速入门教程 读书笔记
http://www.cnblogs.com/majianchao/p/6602234.html
- php编程读书笔记,php3小时快速入门-读书笔记
1.php介绍:web开发 2.hello world 编写 echo "hello world"; ?> echo ' ' 3.开发环境 wamp---localhost/ ...
- Qt 快速入门学习笔记
Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...
- Docker快速入门总结笔记
文章目录 1. Docker概述 2. 虚拟化技术和容器化技术 3. Docker的基本组成 4. Docker的安装 5. Docker的卸载 6. 配置阿里云镜像加速 8. Docker容器运行流 ...
- Qt Designer快速入门
Qt Designer快速入门 Qt Designer快速入门 Qt Designer快速入门 使用Qt Designer涉及四个基本步骤: 选择你的形式和对象 将对象放在表格上 将信号连接到插槽 预 ...
最新文章
- Intellij IDEA 添加jar包
- RESTful服务最佳实践
- compass reset和layout [Sass和compass学习笔记]
- php加入js动态效果,js怎么给输入框增加动画效果
- mongoDB的监控工具
- SQLite—homework
- 【GPU编程】基于GPU的光线投射体绘制(GPU-Based Ray-Casting Volume Rendering)入门学习
- MongoDB聚合运算之mapReduce函数的使用(11)
- 模型训练中batch_size的选择
- IT,大一,这里我有点建议
- 用tbtools基因家族分析《一》
- Windbg远程调试
- 如何修改电驴服务器地址,emule设置连接服务器地址
- iPhone内存比Android手机小,为什么iPhone内存1G、2G比安卓内存4G运行更快?
- python第一天----爬取优美图库的图片
- 成都宏鑫软科技有限公司
- 连续10年霸榜第一?程序员「最常用」的编程语言是它?
- OCR识别文字是什么?了解一下如何使用
- 仿soul交友盲盒1.0全开源源码
- 基于Linux的kfifo移植到STM32(支持os的互斥访问)
热门文章
- 米家扫地机器人是石头代工的_扫地机器人哪个牌子好?推荐备受消费者喜爱的五大品牌...
- Nullable Value Type
- 游戏核心之固定流水线
- 互评Beta版本-SkyHunter
- 网页三剑客Dreamweaver、Flash、Fireworks CS6
- 某电脑开机后电源指示灯亮,能听到 CPU 风扇的声音,但无显示无报警声音,故障部件不可能...
- 第9关:生成器与 yield
- Hive Lateral View
- 在HTML中rotate属性,CSS 图片的旋转rotate旋转属性(一)
- Python入门(13)——文件和异常