图书简介:
目 录第1部分 Qt 基 础第1章 Qt概述 11.1 什么是Qt 11.2 Qt 5的安装 21.2.1 下载Qt和申请免费账号 21.2.2 安装Qt 5.11 41.2.3 运行Qt Creator 61.2.4 Qt 5开发环境 71.3 Qt 5开发步骤及实例 81.3.1 设计器Qt Designer实现 91.3.2 代码实现简单实例 151.3.3 Qt低版本实例迁移 18L1.2 Qt 5的安装:概念解析 19伙伴编辑模式(Edit Buddies) 19L1.3 Qt 5开发步骤及实例:概念解析 19L1 信号和槽机制(Signal & Slot) 19L2 Qt 5元对象系统 21L3 布局管理器 21第2章 Qt 5模板库、工具类及控件 222.1 字符串类 222.1.1 操作字符串 222.1.2 查询字符串数据 232.1.3 字符串的转换 242.2 容器类 252.2.1 QList类、QLinkedList类和QVector类 262.2.2 QMap类和QHash类 312.3 QVariant类 332.4 算法及正则表达式 362.4.1 Qt 5常用算法 362.4.2 基本的正则表达式 372.5 控件 372.5.1 按钮组(Buttons) 382.5.2 输入部件组(Input Widgets) 392.5.3 显示控件组(Display Widgets) 402.5.4 空间间隔组(Spacers) 412.5.5 布局管理组(Layouts) 412.5.6 容器组(Containers) 422.5.7 项目视图组(Item Views) 442.5.8 项目控件组(Item Widgets) 462.5.9 小综合例子 49L2.1 字符串类QString:概念解析 52L1 隐式共享 52L2 内存分配策略 53L2.5 Qt 5控件:概念解析 54Qt::WindowFlags枚举类型 54第3章 Qt 5布局管理 563.1 分割窗口QSplitter类 563.2 停靠窗口QDockWidget类 583.3 堆栈窗体QStackedWidget类 613.4 基本布局(QLayout) 633.5 【综合实例】(CH305):修改用户资料 68第4章 Qt 5基本对话框 784.1 标准文件对话框类 814.1.1 函数说明 814.1.2 创建步骤 824.2 标准颜色对话框类 834.2.1 函数说明 834.2.2 创建步骤 834.3 标准字体对话框类 844.3.1 函数说明 844.3.2 创建步骤 844.4 标准输入对话框类 854.4.1 标准字符串输入对话框 884.4.2 标准条目选择对话框 894.4.3 标准int类型输入对话框 894.4.4 标准double类型输入对话框 904.5 消息对话框类 914.5.1 Question消息框 934.5.2 Information消息框 944.5.3 Warning消息框 954.5.4 Critical消息框 964.5.5 About消息框 964.5.6 About Qt消息框 974.6 自定义消息框 974.7 工具盒类 984.8 进度条 1024.9 调色板与电子钟 1064.9.1 QPalette类 1064.9.2 QTime类 1124.9.3 【综合实例】电子时钟 1124.10 可扩展对话框 1154.11 不规则窗体 1184.12 程序启动画面(QSplashScreen) 121第5章 Qt 5主窗口 1235.1 Qt 5主窗口构成 1235.1.1 基本元素 1235.1.2 【综合实例】文本编辑器 1245.1.3 菜单与工具栏的实现 1275.2 Qt 5文件操作功能 1325.2.1 新建文件 1325.2.2 打开文件 1325.2.3 打印文件 1345.3 Qt 5图像坐标变换 1375.3.1 缩放功能 1375.3.2 旋转功能 1385.3.3 镜像功能 1405.4 Qt 5文本编辑功能 1415.4.1 设置字体 1445.4.2 设置字号 1445.4.3 设置文字加粗 1445.4.4 设置文字斜体 1455.4.5 设置文字加下画线 1455.4.6 设置文字颜色 1455.4.7 设置字符格式 1465.5 Qt 5排版功能 1465.5.1 实现段落对齐 1485.5.2 实现文本排序 148第6章 Qt 5图形与图片 1526.1 Qt 5位置相关函数 1526.1.1 区别概述 1526.1.2 【实例】位置函数的应用 1536.2 Qt 5基础图形的绘制 1566.2.1 绘图框架设计 1566.2.2 绘图区的实现 1576.2.3 主窗口的实现 1616.3 Qt 5双缓冲机制 1736.3.1 原理与设计 1736.3.2 绘图区的实现 1746.3.3 主窗口的实现 1786.4 显示Qt 5 SVG格式图片 180L6.4 Qt 5 SVG格式图片显示:概念解析 185XML 185第7章 Qt 5图形视图框架 1877.1 图形视图体系结构 1877.1.1 Graphics View框架结构的主要特点 1877.1.2 Graphics View框架结构的三元素 1877.1.3 GraphicsView框架结构的坐标系统 1897.2 【实例】图形视图 1907.2.1 飞舞的蝴蝶 1907.2.2 地图浏览器 1947.2.3 图元创建 1987.2.4 图元的旋转、缩放、切变和位移 207第8章 Qt 5模型/视图结构 2148.1 概述 2148.1.1 基本概念 2148.1.2 【实例】模型/视图类使用 2158.2 模型(Model) 2178.3 视图(View) 2208.4 代理(Delegate) 232第9章 Qt 5文件及磁盘处理 2409.1 读写文本文件 2409.1.1 使用QFile类读写文本 2409.1.2 使用QTextStream类读写文本 2419.2 读写二进制文件 2439.3 目录操作与文件系统 2459.3.1 文件大小及路径获取实例 2469.3.2 文件系统浏览 2479.4 获取文件信息 2519.5 监视文件和目录变化 255第10章 Qt 5网络与通信 25710.1 获取本机网络信息 25710.2 基于UDP的网络广播程序 26010.2.1 UDP工作原理 26010.2.2 UDP 编程模型 26110.2.3 【实例】UDP服务器编程 26110.2.4 【实例】UDP客户端编程 26410.3 基于TCP的网络聊天室程序 26610.3.1 TCP工作原理 26710.3.2 TCP编程模型 26710.3.3 【实例】TCP服务器端编程 26710.3.4 【实例】TCP客户端编程 27310.4 Qt网络应用开发初步 27810.4.1 【实例】简单网页浏览器 27910.4.2 文件下载实例 280第11章 Qt 5事件处理及实例 28311.1 鼠标事件及实例 28311.2 键盘事件及实例 28511.3 事件过滤及实例 291 第12章 Qt 5多线程 29712.1 多线程及简单实例 29712.2 多线程控制 30112.2.1 互斥量 30112.2.2 信号量 30212.2.3 线程等待与唤醒 30512.3 多线程应用 30912.3.1 【实例】服务器端编程 30912.3.2 【实例】客户端编程 313第13章 Qt 5数据库 31813.1 数据库基本概念 31813.2 常用SQL命令 32113.2.1 数据查询 32113.2.2 数据操作 32413.3 Qt操作数据库及实例 32513.3.1 Qt操作SQLite数据库 32613.3.2 Qt操作主/从视图及XML 332第14章 Qt 5操作Office实例 35914.1 Qt操作Office的基本方式 35914.1.1 QAxObject对象访问 35914.1.2 AxWidget界面显示 36114.1.3 项目配置 36214.2 Qt对Office的基本读写 36314.2.1 程序界面 36314.2.2 全局变量及方法 36414.2.3 对Excel的读写 36514.2.4 对Word的读写 36714.3 Excel公式计算及显示:统计高考录取人数与录取率 36914.3.1 程序界面 36914.3.2 全局变量及方法 37014.3.3 功能实现 37114.3.4 运行演示 37314.4 Qt操作Word应用 37514.4.1 读取Word表格数据:中国历年高考数据检索 37514.4.2 向文档输出表格:输出近5年的高考信息统计表 378第15章 Qt 5多国语言国际化 38415.1 基本概念 38415.1.1 国际化支持的实现 38415.1.2 翻译工作:“*.qm”文件的生成 38515.2 【实例】语言国际化应用 38515.2.1 简单测试 38515.2.2 选择语言翻译文字 389第16章 Qt 5单元测试框架 39416.1 QTestLib框架 39416.2 简单的Qt单元测试 39416.3 数据驱动测试 39816.4 简单性能测试 401第2部分 Qt综合实例第17章 【综合实例】电子商城系统 40317.1 商品管理系统功能需求 40317.1.1 登录功能 40317.1.2 新品入库功能 40417.1.3 预售订单功能 40417.2 项目开发准备 40517.2.1 项目配置 40517.2.2 数据库准备 40717.3 商品管理系统界面设计 41117.3.1 总体设计 41117.3.2 “新品入库”页 41217.3.3 “预售订单”页 41317.3.4 登录窗口 41417.4 商品管理系统功能实现 41717.4.1 登录功能实现 41717.4.2 主体程序框架 41917.4.3 界面初始化功能实现 42417.4.4 新品入库功能实现 42717.4.5 预售订单功能实现 42917.5 商品管理系统运行演示 43117.5.1 登录电子商城 43117.5.2 新品入库和清仓 43217.5.3 预售下订单 432第18章 【综合实例】MyWord字处理软件 43418.1 核心功能界面演示 43418.2 界面设计与开发 43518.2.1 菜单系统设计 43518.2.2 工具栏设计 44318.2.3 建立MDI程序框架 44618.2.4 子窗口管理 44918.2.5 界面生成试运行 45618.3 基本编辑功能实现 45618.3.1 打开文档 45618.3.2 保存文档 45918.3.3 文档操作 46218.4 文档排版美化功能实现 46418.4.1 字体格式设置 46418.4.2 段落对齐设置 46718.4.3 颜色设置 46918.4.4 段落标号、编号 47018.4.5 文档打印与预览 473第19章 【综合实例】微信客户端程序 47619.1 界面设计与开发 47619.1.1 核心功能界面演示 47619.1.2 登录对话框设计 47919.1.3 聊天窗口设计 48019.1.4 文件传输服务器界面设计 48219.1.5 文件传输客户端界面设计 48319.2 登录功能实现 48319.3 基本聊天会话功能实现 48619.3.1 基本原理 48719.3.2 消息类型与UDP广播 48719.3.3 会话过程的处理 49219.3.4 聊天程序试运行 49419.4 文件传输功能实现 49419.4.1 基本原理 49419.4.2 服务器开发 49519.4.3 客户端开发 50019.4.4 主界面的控制 50319.4.5 文件传输试验 506第3部分 Qt扩展应用:OpenCV第20章 Qt 5.11.1+OpenCV(含Contrib)-3.4.3环境搭建 50920.1 安装CMake 50920.2 添加系统环境变量 51020.3 下载OpenCV 51020.4 下载Contrib 51120.5 编译前准备 51220.6 编译配置 51520.7 开始编译 51920.8 安装OpenCV库 520第21章 OpenCV图片处理 52221.1 图片美化 52321.1.1 图片增强 52321.1.2 平滑滤波 52921.2 多图合成 53521.2.1 程序界面 53621.2.2 全局变量及方法 53721.2.3 初始化显示 53721.2.4 功能实现 53821.2.5 运行效果 53921.3 图片旋转缩放 54021.3.1 程序界面 54021.3.2 全局变量及方法 54121.3.3 初始化显示 54221.3.4 功能实现 54321.3.5 运行效果 54421.4 图片智能识别 54521.4.1 寻找匹配物体 54521.4.2 人脸识别 550第22章 【综合实例】医院远程诊断系统 55522.1 远程诊断系统功能需求 55522.1.1 诊疗点科室管理 55522.1.2 CT影像显示和处理 55622.1.3 患者信息选项卡 55622.1.4 后台数据库浏览 55622.1.5 界面的总体效果 55722.2 Qt项目工程创建与配置 55722.3 远程诊疗系统界面设计 56022.4 远程诊疗系统功能实现 56322.4.1 数据库准备 56322.4.2 Qt应用程序主体框架 56522.4.3 界面初始化功能实现 57022.4.4 诊断功能实现 57222.4.5 患者信息表单 57422.5 远程诊疗系统运行演示 57622.5.1 启动、连接数据库 57622.5.2 执行诊断分析 57722.5.3 表单信息联动 57922.5.4 查看病历 579第4部分 QML和Qt Quick及其应用第23章 QML编程基础 58023.1 QML概述 58023.1.1 第一个QML程序 58123.1.2 QML文档构成 58423.1.3 QML基本语法 58423.2 QML可视元素 58723.2.1 Rectangle(矩形)元素 58723.2.2 Image(图像)元素 58923.2.3 Text(文本)元素 59023.2.4 自定义元素(组件) 59223.3 QML元素布局 59423.3.1 Positioner(定位器) 59423.3.2 Anchor(锚) 59823.4 QML事件处理 60223.4.1 鼠标事件 60223.4.2 键盘事件 60423.4.3 输入控件与焦点 60623.5 QML集成JavaScript 60923.5.1 调用JavaScript函数 60923.5.2 导入JS文件 610第24章 QML动画特效 61324.1 QML动画元素 61324.1.1 PropertyAnimation元素 61324.1.2 其他动画元素 61824.1.3 Animator元素 62024.2 动画流UI界面 62124.2.1 状态和切换 62224.2.2 设计组合动画 62524.3 图像特效 62724.3.1 3D旋转 62724.3.2 色彩处理 62924.4 Qt 5.5(Qt Quick Extras 1.4)新增饼状菜单 631第25章 Qt Quick Controls开发基础 63425.1 Qt Quick Controls概述 63425.1.1 第一个Qt Quick Controls程序 63425.1.2 Qt Quick窗体应用程序的构成 63625.2 Qt Quick控件 64025.2.1 概述 64025.2.2 基本控件 64125.2.3 高级控件 64625.2.4 样式定制 65025.3 Qt Quick对话框 65725.4 Qt Quick导航视图 66225.5 Qt 5.5(Qt Quick Controls 1.4)新增组件 667第26章 Qt Quick Controls 2新颖界面开发 67126.1 Qt Quick Controls 2简介 67126.1.1 第一个Qt Quick Controls 2程序 67226.1.2 Qt Quick Controls 2程序的构成 67526.2 Qt Quick Controls 2与Qt Quick Controls 1的比较 67826.2.1 ApplicationWindow结构不同 67826.2.2 Menu不支持窗口主菜单 68126.2.3 控件实现差异 68326.3 滑动翻页及隐藏面板 68826.4 选项列表 69326.5 带功能按钮的列表 696第27章 【综合实例】多功能文档查看器 70227.1 核心功能界面演示 70227.2 界面与程序框架设计 70327.2.1 准备应用资源 70427.2.2 主程序代码框架 70527.3 浏览网页功能实现 71227.3.1 实现HtmlHandler处理器 71227.3.2 编写Action 71627.3.3 定义主显示区元素 71627.3.4 实现“打开网页”对话框 71627.4 阅读文本功能实现 71727.4.1 实现TextHandler处理器 71827.4.2 编写Action 72127.4.3 定义主显示区元素 72227.4.4 实现“打开文本”对话框 72227.5 查看图片功能实现 72327.5.1 编写Action 72327.5.2 定义主显示区元素 72527.5.3 实现“打开图片”对话框 72527.5.4 对图片的处理 726第5部分 附 录附录A C++相关知识 727A.1 C++程序结构 727A.2 C++预处理命令 728A.3 C++异常处理 730A.4 C++面向对象编程 732附录B Qt 5简单调试 741B.1 修正语法错误 741B.2 设置断点 742B.3 程序调试运行 742B.4 查看和修改变量的值 743B.5 qDebug()的用法 745
展开
前 言Qt是软件开发领域中非常著名的C++可视化开发平台,能够为应用程序开发者提供建立艺术级图形用户界面所需的所有功能。它是完全面向对象的,很容易扩展,并且可应用于组件编程。相对于Visual C++,Qt更易于学习和开发。2014年,我们编写了《Qt 5开发及实例》,受到市场的广泛欢迎。2015年,《Qt 5开发及实例》(第2版)推出,它以Qt 5.4为平台,增加了关于QML及Qt Quick开发的内容,继续受到市场的广泛推崇。2017年,以Qt 5.8为基础,推出《Qt 5开发及实例》(第3版),市场持续热销。本书以Qt 5.11为平台,介绍内容包括Qt概述,模板库、工具类及控件,布局管理,基本对话框,主窗口,图形与图片,图形视图框架,模型/视图结构,文件及磁盘处理,网络与通信,事件处理及实例,多线程,数据库,操作Office,多国语言国际化,单元测试框架,QML编程基础,QML动画特效,Qt Quick Controls开发基础,Qt Quick Controls 2新颖界面开发等。本书在上一版的基础上对综合实例进行了重新设计,对Qt功能进行了大幅扩展。全书分为以下5个部分。第1部分为Qt基础(第1章~第16章),在上一版的基础上增加了关于Qt操作表格处理软件Excel数据和字处理软件Word数据的内容。第2部分为Qt综合实例(第17章~第19章),重新设计了【综合实例】电子商城系统、【综合实例】MyWord字处理软件、【综合实例】微信客户端程序。电子商城系统主要突出Qt界面和对常用关系数据库(MySQL)的基本操作;微信客户端程序主要突出Qt网络功能和XML操作;MyWord字处理软件主要介绍以界面方式创建菜单、工具栏,系统介绍丰富的文本处理方法。第3部分为Qt扩展应用:OpenCV(第20章~第22章),介绍了Qt配置OpenCV-3.4.3及其图片处理;显示图片,设置图片通道颜色,改变其饱和度和亮度,多图合成,图片放大、缩小、旋转,各种滤波器平滑技术;从图片中智能检索匹配物体、基本人脸识别技术;综合实例为医院远程诊断系统,介绍内容包括打开CT相片、实现用霍夫圆算法对CT病灶区进行识别检测的功能;数据库采用MySQL,对患者信息进行管理。第4部分为QML和Qt Quick及其应用(第23章~第27章),包括上一版QML及Qt Quick的相关内容,【综合实例】仍然为多功能文档查看器。第5部分为附录,附录A介绍C++相关知识,附录B介绍Qt 5简单调试。为了方便读者上机练习,在书中介绍实例时提供源代码编号CH×××(如CH201是第2章的01例);本书还提供了配套的视频分析,分析本书重点内容和综合实例。这些源代码和配套的视频分析可从华信教育资源网(http://www.hxedu.com.cn)免费下载。为了方便读者理解综合应用,本书对典型的【综合实例】通过扫描二维码提供视频分析。通过学习本书,结合实例上机练习,一般能够在比较短的时间内系统、全面地掌握Qt 5应用技术。本书由陆文周担任主编。参加本书编写的还有周何骏、孙德荣、郑博琳、王钢花、刘美芳、卢霞、秦洪林、刘博文、刘忠等。由于编者水平有限,错误之处在所难免,敬请广大读者、师生批评指正。意见、建议邮箱:easybooks@163.com。
编 者
展开