qt4 gui编程学习笔记
第一章:QT入门
- app.exec():将应用程序的控制权传递给QT,进入事件循环中,处于等待模式,等待用户的操作。
- 可以为部件设置html样式
- qt是模拟平台外观来实现好像看起来都是本地程序,而不是说对某个平台进行封装或有一个专门的窗口部件集合
- 窗口布局管理器(QHBoxLayout。。。)会对放入的部件自动进行重定义其父的部件对象
- 众多类之间的关系:
第二章:创建对话框
- 对于定义了信号与槽的类,在类开始的Q_OBJECT宏是必需的
- signal和slot本质上都是宏定义
- tr(string)函数是翻译成其他语言的标记。
这中的&,表示类快捷键的意思,按下快捷键时,控件接收焦点。- const int &a:常引用,a地址不可修改,指向的内存也不可以修改
- 布局管理器的addstrech()函数用于设置控件之间的伸缩量
- 布局管理器是window的直接子对象和控件是平级的
深入介绍信号与槽
- 槽函数可以是虚函数可以冲在可以公有私有和保护,也可以直接被调用
- 一个信号可以链接多个槽函数,调用顺序不确定
- 多个信号可以链接一个槽
- 一个信号可以链接另外一个信号
- 原则上信号槽的参数要相同,如果信号参数比槽多,多余的会被直接忽略掉。
Qt的元对象系统:
- 对cpp进行了扩展,提供两个关键技术:信号槽和内省功能。内省功能对于信号槽是必需的
- 允许开发者在运行时获得QObject子类的元信息:包括含对象的类名和它所支持的信号与槽的列表,这一机制也支持属性和文本翻译,为Qtscript奠定基础
- moc解析Q_Object类的定义并通过cpp函数来提供,moc使用纯cpp实现,所以元对象系统可以在任意的c++编译器上工作。
具体工作机制:
- 由ui文件生成的ui_ .h文件包含了有关与窗口的一些类的声明
- setupUI函数初始化窗体,而且会将有有objectName_signalName()命名惯例的槽和信号链接到一起。
- .ui文件是xml格式的
- 动态对话框:使用QUiLoader载入文件,不需要uic把ui文件转成cpp的代码。
- 动态对话框可以利用findChild
()来访问窗体中中的各个子部件。
能够使得不重新编译就能改变窗体的布局
第三章 创建主窗口
- closeEvent是虚函数,当窗口关闭时函数会被自动调用。
- 载入图片的方法有常见几种:
- 图片保存到文件,在运行时候载入
- 把XPM文件包含在源代码中。
- 使用QT的资源机制。(适用于所支持的任意文件格式,比运行时载入文件更加的方便)资源文件会被编译到可执行文件当中去,因此不用担心会弄丢他们。
- 通过exec调用的对话框是模态的,通过show调用的是非模态的
- QSettings保存了应用程序中与特定平台的东西,win中的是注册表,unix是存储在文本文件,macOS会使用core foundation preference的应用程序编程接口。信息是键值对的方式进行存储。
- 使用QsplashScreen添加启动画面
坑:使用pixmap读取图片失败,可以看图片格式是否被修改:
如果show调用后不显示,processEvent()
- 遍历当前应用程序的所有窗口:
第四章:实现应用程序的功能
-
Qfile和QdataStream实现与平台无关的二进制文件读取接口。
-
剪贴板的使用