![]() ![]() |
Qt 5 开发及实例(第5版) 读者对象:本书既可作为Qt 的学习和参考用书,也可作为大学教材或Qt 5培训用书。
Qt 是软件开发领域中非常著名的C++可视化开发平台。本书以Qt 5.15 为平台,系统介绍Qt 5 的各种功能,在此基础上配套各种实例,然后综合应用各种功能开发综合应用实例。全书分为以下5 部分。第1 部分为Qt 5 基础(第1~11 章),内容包括Qt 概述,模板库、工具类及控件,布局管理,基本对话框及实例,主窗口及实例,事件处理及实例,绘图及实例,文件、目录与数据库操作,模型/视图及实例,网络通信及实例,定时器、线程和DLL 库。第2 部分为综合应用实例(第12~15 章),内容包括图元、鼠标事件、序列化、工具栏综合应用实例(我的绘图板),MDI、文件目录、树、Python综合应用实例(文档分析器),网络通信、SQLite、图元系统、实时语音综合应用实例(简版微信),多媒体、线程、视频图元、MySQL 综合应用实例(简版抖音)。第3 部分为Qt 5.15 和OpenCV 综合应用(第16~18 章),内容包括Qt 5.15+OpenCV(含Contrib)-4.6.0 环境搭建,OpenCV 图片处理及实例,OpenCV、树控件、表格控件综合应用实例(医院远程诊断系统)。第4 部分为QML 编程基础、QML 动画特效和Qt Quick Controls 开发基础(第19~21 章)。第5 部分为网络资源文件和文档(可免费下载),包括本书所有实例和综合应用实例的工程文件、21 个PPT 教学培训课件、57 个实例开发教学视频文件、电子商城系统综合实例文档、MyWord 字处理软件综合实例文档,Qt 5 操作Office 实例文档等。附录A 为Qt 5 简单调试。本书既可作为Qt 5 开发人员的学习和参考用书,也可作为高等院校相关专业教材或Qt 5 培训用书。
郑阿奇,副教授,曾任教于南京师范大学。先后主编出版计算机教材和图书超过100本,受到市场广泛好评。出版的教材曾获得高等教育国家“十一五”规划教材、高等职业教育“十二五”国家规划教材、高等职业教育“十三五”国家规划教材、江苏省高等职业教育“十四五”规划教材、江苏省教学成果二等奖、高等职业教育优秀教材一等奖等荣誉。
第1 章 Qt 概述·······································································································.1
1.1 什么是Qt···································································································.1 1.1.1 Qt 的产生和发展···················································································.1 1.1.2 Qt 5.15 与Qt 6 ······················································································.2 1.2 Qt 5.15 的安装····························································································.2 1.2.1 下载Qt 在线安装器和申请免费账号··························································.2 1.2.2 安装过程·····························································································.4 1.2.3 运行Qt Creator ·····················································································.7 1.2.4 Qt 5.15 开发环境···················································································.8 1.3 Qt 5.15 开发入门实例·················································································.9 1.3.1 设计器Qt Designer 开发实例··································································.10 1.3.2 直接代码开发实例···············································································.19 第2 章 模板库、工具类及控件··············································································.24 2.1 字符串类··································································································.24 2.1.1 操作字符串························································································.24 2.1.2 查询字符串数据··················································································.25 2.1.3 字符串的转换·····················································································.26 2.2 容器类·····································································································.27 2.2.1 QList、QLinkedList 和QVector ·······························································.28 2.2.2 QMap 和QHash ··················································································.33 2.3 QVariant ···································································································.36 2.4 算法及正则表达式····················································································.38 2.4.1 常用算法···························································································.38 2.4.2 基本的正则表达式···············································································.39 2.5 控件·········································································································.40 2.5.1 按钮组(Buttons) ··············································································.40 2.5.2 输入部件组(Input Widgets)·································································.42 2.5.3 显示控件组(Display Widgets)······························································.43 2.5.4 空间间隔组(Spacers) ········································································.44 2.5.5 布局管理组(Layouts) ········································································.44 2.5.6 容器组(Containers)···········································································.44 2.5.7 项目视图组(Item Views) ····································································.46 2.5.8 项目控件组(Item Widgets)··································································.48 2.5.9 多控件实例························································································.52 第3 章 布局管理···································································································.56 3.1 分割窗口类:QSplitter··············································································.56 3.2 停靠窗口类:QDockWidget ······································································.58 3.3 堆栈窗体类:QStackedWidget ···································································.60 3.4 基本布局类:QLayout ··············································································.62 3.5 布局管理综合实例····················································································.67 第4 章 基本对话框及实例·····················································································.78 4.1 标准文件对话框类····················································································.81 4.1.1 函数说明···························································································.81 4.1.2 创建步骤···························································································.82 4.2 标准颜色对话框类····················································································.83 4.2.1 函数说明···························································································.83 4.2.2 创建步骤···························································································.83 4.3 标准字体对话框类····················································································.84 4.3.1 函数说明···························································································.84 4.3.2 创建步骤···························································································.84 4.4 标准输入对话框类····················································································.85 4.4.1 标准字符串输入对话框·········································································.88 4.4.2 标准条目选择对话框············································································.89 4.4.3 标准int 类型输入对话框·······································································.89 4.4.4 标准double 类型输入对话框··································································.90 4.5 消息对话框类···························································································.91 4.5.1 Question 消息对话框············································································.93 4.5.2 Information 消息对话框·········································································.94 4.5.3 Warning 消息对话框·············································································.95 4.5.4 Critical 消息对话框··············································································.95 4.5.5 About 消息对话框···············································································.96 4.5.6 About Qt 消息对话框············································································.96 4.6 自定义消息对话框····················································································.97 4.7 工具盒类··································································································.98 4.8 进度条····································································································.102 4.9 调色板与电子钟······················································································.106 4.9.1 QPalette ····························································································106 4.9.2 QTime ·····························································································.111 4.9.3 电子钟实例·······················································································.112 4.10 可扩展对话框························································································.115 4.11 不规则窗体····························································································.118 4.12 程序启动画面类:QSplashScreen····························································.120 第5 章 主窗口及实例···························································································.123 5.1 主窗口构成·····························································································.123 5.1.1 基本元素··························································································.123 5.1.2 文本编辑器项目框架···········································································.124 5.1.3 菜单与工具栏的实现···········································································.127 5.2 文件操作功能··························································································.131 5.2.1 新建文件··························································································.131 5.2.2 打开文件··························································································.132 5.2.3 打印文件··························································································.134 5.3 图像坐标变换··························································································.137 5.3.1 缩放功能··························································································.137 5.3.2 旋转功能··························································································.138 5.3.3 镜像功能··························································································.140 5.4 文本编辑功能··························································································.141 5.4.1 设置字体··························································································.143 5.4.2 设置字号··························································································.144 5.4.3 设置文字加粗····················································································.144 5.4.4 设置文字斜体····················································································.145 5.4.5 设置文字加下画线··············································································.145 5.4.6 设置文字颜色····················································································.145 5.4.7 设置字符格式····················································································.146 5.5 排版功能·································································································.146 5.5.1 实现段落对齐····················································································.147 5.5.2 实现文本排序····················································································.148 第6 章 事件处理及实例·······················································································.151 6.1 鼠标事件·································································································.151 6.2 键盘事件·································································································.153 6.3 事件过滤器·····························································································.159 第7 章 绘图及实例······························································································.164 7.1 基础图形的绘制······················································································.164 7.1.1 绘图基础类·······················································································.164 7.1.2 QPainter 绘图框架实例········································································.174 7.1.3 绘制实时时钟实例··············································································.187 7.2 GraphicsView 绘图···················································································.190 7.2.1 视图、场景、图元的概念·····································································.190 7.2.2 GraphicsView 坐标系统········································································.192 7.2.3 飞舞的蝴蝶实例·················································································.193 7.3 二维图表绘制··························································································.196 7.3.1 QtCharts 基础····················································································.196 7.3.2 绘制螺旋曲线实例··············································································.198 7.3.3 绘制柱状/折线图实例··········································································.201 7.3.4 绘制饼状图实例·················································································.203 7.4 三维绘图·································································································.205 7.4.1 QtDataVisualization 基础······································································.205 7.4.2 三维绘图实例····················································································.207 第8 章 文件、目录与数据库操作·········································································.210 8.1 文件操作·································································································.210 8.1.1 文本文件操作实例··············································································.210 8.1.2 二进制文件操作实例···········································································.213 8.2 目录操作·································································································.215 8.2.1 文件大小及路径获取实例·····································································.215 8.2.2 文件系统浏览实例··············································································.217 8.2.3 获取文件信息实例··············································································.220 8.3 数据库操作·····························································································.224 8.3.1 数据库与SQL 基础············································································.224 8.3.2 QtSql································································································231 8.3.3 操作SQLite 实例···············································································.233 8.3.4 操作MySQL 实例··············································································.237 8.3.5 操作SQL Server 实例··········································································.243 第9 章 模型/视图及实例······················································································.248 9.1 模型/视图架构·························································································.248 9.1.1 基本概念··························································································.248 9.1.2 实现类·····························································································.249 9.2 常用模型/视图组件实例···········································································.250 9.2.1 表格模型/视图及实例··········································································.250 9.2.2 树状模型/视图及实例··········································································.253 9.2.3 文件目录浏览器实例···········································································.256 9.2.4 自定义模型实例·················································································.258 9.3 代理及应用实例······················································································.262 9.3.1 代理概念及开发步骤···········································································.262 9.3.2 代理应用实例····················································································.264 9.4 综合实例:汽车信息管理系统·································································.271 9.4.1 开发前的准备····················································································.272 9.4.2 开发视图界面····················································································.273 9.4.3 连接数据库·······················································································.276 9.4.4 开发主/从视图···················································································.283 9.4.5 添加/删除汽车信息·············································································.287 第10 章 网络通信及实例·····················································································.296 10.1 获取本机网络信息·················································································.296 10.2 基于UDP 的数据通信············································································.299 10.2.1 UDP 工作原理·················································································.299 10.2.2 UDP 应用实例·················································································.301 10.3 基于TCP 的数据通信············································································.306 10.3.1 TCP 工作原理··················································································.306 10.3.2 TCP 应用实例··················································································.309 第11 章 定时器、线程和DLL 库··········································································.320 11.1 定时器和线程························································································.320 11.1.1 定时器:QTimer···············································································.320 11.1.2 线程:QThread·················································································.322 11.2 Qt 程序开发和调用DLL 库····································································.326 11.2.1 开发DLL························································································.326 11.2.2 使用DLL························································································.329 第12 章 图元、鼠标事件、序列化、工具栏综合应用实例:我的绘图板···············.334 【技术基础】···································································································.335 12.1 绘图相关技术························································································.335 12.2 绘图场景数据结构·················································································.336 12.2.1 数据结构设计··················································································.336 12.2.2 数据结构实现··················································································.337 12.2.3 数据结构处理··················································································.339 【实例开发】···································································································.341 12.3 创建项目·······························································································.341 12.3.1 项目设置························································································.341 12.3.2 界面设计························································································.344 12.3.3 程序框架························································································.346 12.4 主界面开发···························································································.350 12.4.1 文件管理栏开发···············································································.350 12.4.2 样式栏开发·····················································································.351 12.4.3 工具箱开发·····················································································.355 12.4.4 绘图区和状态栏开发·········································································.356 12.5 绘图功能开发························································································.359 12.5.1 创建图元························································································.359 12.5.2 调整图元大小··················································································.365 12.5.3 设置样式························································································.368 12.5.4 操纵图元························································································.376 12.6 图元文件管理························································································.377 第13 章 MDI、文件目录、树、Python 综合应用实例:文档分析器······················.383 【技术基础】···································································································.384 【实例开发】···································································································.384 13.1 创建项目·······························································································.384 13.1.1 项目设置························································································.384 13.1.2 界面设计························································································.388 13.1.3 程序框架························································································.391 13.2 文档的管理···························································································.398 13.2.1 目录导航························································································.398 13.2.2 文档归类························································································.399 13.2.3 打开文档························································································.401 13.2.4 多文档窗口布局···············································································.403 13.3 文档的分析···························································································.405 13.3.1 文本的分析·····················································································.406 13.3.2 获取网页主题链接············································································.410 13.3.3 识别、扫描书页文字·········································································.412 13.3.4 分析结果处理··················································································.417 13.4 其他功能·······························································································.418 第14 章 网络通信、SQLite、图元系统、实时语音综合应用实例:简版微信········.420 【技术基础】···································································································.421 14.1 网络通信·······························································································.421 14.1.1 UDP 收发消息·················································································.421 14.1.2 TCP 传输························································································.423 14.2 服务器数据库························································································.425 14.2.1 创建数据库MyWeDb·········································································.425 14.2.2 数据库访问与操作············································································.426 14.3 SQLite 应用···························································································.427 14.3.1 创建SQLite·····················································································.427 14.3.2 记录日志························································································.428 14.3.3 加载日志························································································.429 14.4 用到的其他控件和技术··········································································.430 【实例开发】···································································································.430 14.5 创建项目·······························································································.430 14.5.1 客户端项目·····················································································.430 14.5.2 服务器项目·····················································································.440 14.6 界面开发·······························································································.443 14.6.1 界面设计························································································.443 14.6.2 初始化···························································································.446 14.6.3 界面切换························································································.448 14.7 基本功能开发························································································.449 14.7.1 用户管理························································································.449 14.7.2 文字聊天························································································.454 14.7.3 信息暂存与转发···············································································.457 14.8 增强功能开发························································································.459 14.8.1 功能演示························································································.459 14.8.2 文件、图片、语音的传输···································································.461 14.8.3 实时语音通话··················································································.472 第15 章 多媒体、线程、视频图元、MySQL 综合应用实例:简版抖音·················.477 【技术基础】···································································································.477 15.1 视频播放处理························································································.477 15.2 MySQL 数据库······················································································.478 15.2.1 设计数据库MyTikTok ·······································································.478 15.2.2 访问与操作数据库············································································.480 15.2.3 特殊数据类型读写············································································.481 【实例开发】···································································································.481 15.3 创建项目·······························································································.481 15.3.1 项目结构························································································.481 15.3.2 主程序框架·····················································································.485 15.4 主界面开发···························································································.489 15.4.1 界面设计························································································.489 15.4.2 初始化···························································································.491 15.4.3 运行效果························································································.492 15.5 视频基本功能开发·················································································.492 15.5.1 视频播放························································································.492 15.5.2 视频控制························································································.497 15.5.3 视频信息显示··················································································.498 15.6 特色功能开发························································································.501 15.6.1 关注和点赞·····················································································.501 15.6.2 评论与弹幕·····················································································.505 15.6.3 根据用户喜好推荐视频······································································.509 15.7 视频发布·······························································································.513 15.7.1 界面设计························································································.513 15.7.2 视频预览························································································.514 15.7.3 视频发布························································································.515 第16 章 Qt 5.15+OpenCV(含Contrib)-4.6.0 环境搭建····································.519 16.1 准备工作·······························································································.519 16.2 配置编译器···························································································.522 16.3 编译OpenCV·························································································.527 16.4 安装OpenCV·························································································.528 第17 章 OpenCV 图片处理及实例·······································································.531 17.1 图片美化·······························································································.531 17.1.1 图片增强························································································.531 17.1.2 平滑滤波························································································.537 17.2 多图合成·······························································································.543 17.2.1 程序界面························································································.544 17.2.2 全局变量及方法···············································································.545 17.2.3 初始化显示·····················································································.545 17.2.4 功能实现························································································.546 17.2.5 运行效果························································································.547 17.3 图片旋转缩放························································································.548 17.3.1 程序界面························································································.548 17.3.2 全局变量及方法···············································································.549 17.3.3 初始化显示·····················································································.550 17.3.4 功能实现························································································.551 17.3.5 运行效果························································································.552 17.4 图片智能识别························································································.553 17.4.1 寻找匹配物体··················································································.553 17.4.2 人脸识别························································································.557 第18 章 OpenCV、树控件、表格控件综合应用实例:医院远程诊断系统············.563 18.1 功能需求·······························································································.563 18.1.1 诊疗点科室管理···············································································.563 18.1.2 CT 相片显示和处理···········································································.564 18.1.3 患者信息选项卡···············································································.564 18.1.4 后台数据库浏览···············································································.564 18.1.5 界面的总体效果···············································································.565 18.2 Qt 项目工程创建与配置·········································································.565 18.3 界面设计·······························································································.567 18.4 功能实现·······························································································.570 18.4.1 数据库准备·····················································································.570 18.4.2 Qt 应用程序主体框架········································································.572 18.4.3 界面初始化功能实现·········································································.577 18.4.4 诊断功能实现··················································································.578 18.4.5 患者信息表单··················································································.581 18.5 医院远程诊断系统运行演示···································································.583 18.5.1 启动、连接数据库············································································.583 18.5.2 执行诊断分析··················································································.584 18.5.3 表单信息联动··················································································.585 18.5.4 查看病历························································································.586 第19 章 QML 编程基础·······················································································.587 19.1 QML 概述·····························································································.587 19.1.1 第一个QML 程序·············································································.588 19.1.2 QML 文档构成·················································································.592 19.2 QML 可视元素······················································································.595 19.2.1 矩形元素:Rectangle ·········································································.595 19.2.2 图像元素:Image··············································································.596 19.2.3 文本元素:Text················································································.598 19.2.4 自定义元素(组件) ·········································································.600 19.3 QML 元素布局······················································································.602 19.3.1 定位器:Positioner ············································································.602 19.3.2 锚:Anchor ·····················································································.607 19.4 QML 事件处理······················································································.611 19.4.1 鼠标事件························································································.611 19.4.2 键盘事件························································································.613 19.4.3 输入控件与焦点···············································································.616 19.5 QML 集成JavaScript··············································································.618 19.5.1 调用JavaScript 函数··········································································.618 19.5.2 导入JS 文件····················································································.620 第20 章 QML 动画特效·······················································································.623 20.1 QML 动画元素······················································································.623 20.1.1 PropertyAnimation 元素······································································.623 20.1.2 其他动画元素··················································································.628 20.1.3 Animator 元素··················································································.630 20.2 流UI 界面·····························································································.632 20.2.1 状态切换机制··················································································.632 20.2.2 设计组合动画··················································································.635 20.3 图像特效·······························································································.638 20.3.1 3D 旋转··························································································.638 20.3.2 色彩处理························································································.639 第21 章 Qt Quick Controls 开发基础···································································.642 21.1 Qt Quick Controls 概述···········································································.642 21.1.1 第一个Qt Quick Controls 程序·····························································.642 21.1.2 更换界面主题样式············································································.644 21.2 Qt Quick 控件························································································.645 21.2.1 概述······························································································.645 21.2.2 基本控件························································································.645 21.2.3 高级控件························································································.650 21.2.4 样式定制························································································.654 21.3 Qt Quick 对话框·····················································································.662 21.4 Qt Quick 选项标签·················································································.667 附录A Qt 5 简单调试···························································································.673 A.1 修正语法错误·························································································.673 A.2 设置断点································································································.674 A.3 程序调试运行·························································································.674 A.4 查看和修改变量的值··············································································.675 A.5 qDebug()的用法······················································································.677
你还可能感兴趣
我要评论
|