第一章 初步认识Qt
1 Qt简单介绍
1.1 什么是Qt
1.2 优良的跨平台特性
1.3 第一个Qt GUI应用
2 认识窗口
2.1 窗口大小
2.2 窗口坐标系
2.3 窗口关系
2.4 使用信号槽
3 Qt的编译机制
3.1 编译过程
3.2 qmake文件基本语法
4 内存管理机制
第二章 布局管理器
1 QHBoxLayout与QVBoxLayout
2 QGridLayout表格布局管理器
3 嵌套布局管理器
4 获取布局之后窗口大小
第三章 信号与槽机制
1 初步认识信号
3 信号与槽的链接
4 信号槽断开链接
5 自定义信号与槽
第四章 Qt Designer
1 使用设计师界面
2 ui文件的编译过程
第五章 窗口类QMainWindow
1 创建一个QMainWindow工程
2 菜单栏应用
2.1 添加菜单栏
2.2 添加菜单
2.3 添加动作
2.4 添加分隔符
2.5 添加子菜单
3 工具栏应用
3.1 添加工具栏
3.2 添加动作
4 状态栏应用
4.1 创建状态栏
4.2 设置状态栏信息
5 设置中央窗口
6 设置停靠窗口
第六章 模式对话框
1 QDailog与QWidget对比
2 触发一个模式对话框
3 模式窗口exec返回值
4 常见Dialog应用
4.1 QFileDialog文件浏览框
4.2 QFontDialog字体对话框
4.2.1 QFont类
4.2.2 获取系统支持的所有字体
4.2.3 QWidget的QFont对象
4.2.4 使用QFontDialog获取字体
4.3 QColorDialog颜色对话框
第七章QString与QByteArray
1 QString
2 QByteArray
3 QString 与 QByteArray的区别
4 QString QByteArray互转
4.1 QString转QByteArray
4.2 QByteArray转QString
4.3 QString 转char*
第八章 文件读写
1 使用QFile打开文件
2 关闭文件
3 文件读操作
4 文件写操作
5 使用QDataStream
第九章 事件处理机制
1 窗口事件处理函数event
2 鼠标事件
2.1 鼠标点击事件
2.2 鼠标释放事件
2.3 鼠标移动事件
2.4 鼠标滚轮事件
2.5 其它鼠标事件
3 键盘事件
3.1 键盘按下事件
3.2 键盘释放事件
3.3 设置焦点窗口
3.4 判断按键大小写
4 事件过滤器
5 事件传递过程
6 事件处理函数是如何被调用的
7 绘图事件
7.1 QPainter画家
7.2 在窗口上绘图
7.3 转变窗口坐标系
7.4 保存与还原QPainter设置
7.5 绘制事件触发的时机
第十章 2D绘图
1 在QPixmap上绘图
2 在QImage上绘图
3 在QPicture上绘图
4 绘制不规则窗体
第十一章 多线程
1 第一种创建线程方式
2 第二种创建线程方式
3 线程的同步
3.1 互斥锁
3.2 信号量
4 定时器
第十二章 图形视图框架
1 QGraphicsScene的常用函数
2 QGraphicsItem的常用函数
3 图形视图的坐标系
3.1 QGraphscItem图元坐标系
3.2 QGraphicsScene场景坐标系
3.3 QGraphicsView视图坐标系
3.4 坐标映射
3.5 调整坐标系
3.5.1 调整QGraphicsVeiw坐标系
3.5.2 调整QGraphicsItem坐标系
4 图形视图的事件处理
4.1 QGraphicsView的事件处理
4.2 QGraphicsScene的事件处理
4.3 QGraphicsItem的事件处理
5 图形视图的内存管理
6 图形视图碰撞检测
7 背景缓冲
8 打印QGraphicsScene
9 图形效果叠加
第十三章 QTableView
1 QTableView简单应用
2 修改行列字段名
3 移除数据
4 插入数据
5 数据变更信号处理
6 常用函数
7 QStandardItem被点选信号
8 QItemDelegate代理
第十四章 多国语言国际化
1 生成一个qm文件
2 时实切换qm文件
第十五章 多媒体编程
1 音频组件
1.1 最简单的音乐播放器的实现
1.2 常用函数
1.3 播放列表的使用
2 视频播放组件
2.1 使用QVideoWidget播放视频
2.2 使用QGraphicsVideoItem播放视频
第十六章 Qt应用程序的发布
第十七章 MySql的使用
1 使用QSqlDataBase
2 使用QSqlTableModel
2.1 在QTableView上显示
2.2 手动提交
2.3 撤销修改
2.4 过滤器
2.5 排序
2.6 添加一条记录
2.7 删除记录
2.8 综合例子
第一章 初步认识Qt
1 Qt简单介绍
1.1 什么是Qt
Qt是1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI(Graphical
User Interface)程序,也可用于开发非GUI程序,比如控制台程序。与windows上面的MFC是同一类东西。它提供
给应用程序开发者建立艺术级的图形用户界面所需的所有功能,并且Qt很容易扩展。
Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为
支持跨平台开发而设计的IDE(integrated development environment),并确保首次接触Qt框架的开发人员能迅速上手
和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。
Qt真正指的是Qt库,并不是Qt Creator,官网上面的Qt版本号5.7.0也是指的是Qt库的版本,开发者也可以使
用VS集成开发环境来开发基于Qt的应用程序。
1.2 优良的跨平台特性
Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP
UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
Qt在各个平台上都封装了同一套对外的编程接口API(Application Program Interface),开发者可以在一个平台上
编写Qt程序, 同时可以将不经过任何修改的代码放到其它平台中编译, 可以生成对应平台的应用程序.
简单来说,就是一份代码到处编译。
1.3 第一个Qt GUI应用
使用Qt Creator集成开发环境开发应用是通过qmake来组建项目,qmake与cmake类似,qmake语法更简单,
cmake功能更强大。
qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件。不管源代码是否是用Qt写的,都能使用
qmake,因此qmake能用于很多软件的构建过程,qmake文件的后缀一般为.pro。
1. 新建qmake空项目,添加main.cpp源文件
2. 编写.pro项目工程qmake文件,加上QT变量
1. main.cpp中添加QApplication头文件,并且实例化
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv); //每个Qt应用只能有一个QApplication对象,QApplication对象主要
用来处理主程序控制流和主要设置。
}
2. 添加QWidget头文件,实例化对象,调用QWidget对象的show函数显示
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget widget; //Qt中每个窗口都是QWidget对象,或者其派生类的对象。
widget.show();
}
3. 调用QApplication::exec()消息循环, 接受来自桌面系统的消息
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget widget;
widget.show();
return app.exec(); //消息循环,消息泵,阻塞接收桌面系统传递过来的消息。
}
4. 设置窗口标题
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget widget;
widget.setWindowTitle("helloworld");
widget.show();
return app.exec();
}
重要知识:
1、Qt中大部分的类都是继承至QObject,QObject是最基本的类, 通过帮助文档可查看继承关系。
2、QApplication用来管理界面应用的控制流以及主要的程序设置。在Qt中不管有多少的窗口,QApplication实
例对象都只有一个。
3、QWidget 在Qt中是所有窗口类的基类。
2 认识窗口
2.1 窗口大小
Qt中每一个窗口都可以设置其窗口大小,以像素为单位。
void QWidget::resize(int w, int h) //设置窗口大小
QSize size() const //获取窗口大小,返回的是QSize,QSize封装了宽高
2.2 窗口坐标系
Qt中每一个窗口都有一个坐标系统,默认的,窗口左上角为坐标原点,水平向右依次增大,水平向左依次减
小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,以像素为单位增减。
如图:
2.3 窗口关系
普通窗口可以以顶级窗口方式显示,比如直接调用show函数来显示;也可以嵌套在其它窗口上来显示,这个
时候被嵌套的窗口叫做父窗口,嵌套的窗口叫做子窗口。(注意:父子窗口是对象间的组合关系,不是父子类
继承关系)
子窗口位置坐标参考的是父窗口的坐标系。
顶级窗口其父窗口就是桌面,桌面也可以认为是一个窗口。
设置父窗口
void QWidget::setParent(QWidget *parent)
例如:
#include
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget widget;
QPushButton pb;
pb.setParent(&widget); //注意将按钮嵌套到widget窗口中的时候,必须在widget对象调用show函数之前,
否则pb窗口不显示。
widget.show();
return app.exec();
}
设置窗口位置坐标
void QWidget::move(int w, int h) //设置窗口位置,单位像素
void QWidget::setGeometry(int x, int y, int w, int h) //设置窗口几何属性,坐标与大小,单位像素
QPoint pos() const //获取窗口位置,返回QPoint类对象,QPoint封装了x、y坐标
注意:窗口移动的作用点是该窗口的坐标原点,也就是窗口的左上角。
2.4 使用信号槽
信号和槽用于两个QObject对象或者其派生类之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其它
开发框架的最突出的特征。
例如:QPushButton对象点击之后会发射出一个clicked()信号,我们现在要把这个信号传递给QWidget对象,
并且让QWidget对象调用close()函数关闭窗口。
那么要使用到QObject的一个静态函数connect: