![]()
编辑推荐 本书力求比较全面地介绍Qt C++开发应用程序的技术,有以下几个特点。 1.以Qt 5.9 LTS为开发用版本,是目前新版的Qt,未来三年内有持续的支持(上一个LTS版本是Qt 5.6)。 2.介绍了Qt Charts, Data Visualization模块的使用,这是Qt 5.7以后才出现在社区版Qt中的模块,其他书籍没有介绍过的。 3.专注讲解Qt C++编程,内容全面而深入。每个编程主题都精心设计了完整的实例程序,通过实例程序讲解主要类的使用。实例注重实际编程需求,很多实例代码可以直接用于应用程序开发。 4.本书内容安排上循序渐进,编程主题与实例的讲解也接近站在学习者的角度,既讲解原理,也讲解代码实现,让读者跟随着书的内容就能掌握技术要点。 内容推荐 本书以Qt 5.9 LTS版本为开发平台,详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的Graphics/View架构、数据编辑和显示的Model/View架构、对话框和多窗口的设计与调用方法等,介绍了常用界面组件、文件读写、绘图、图表、数据可视化、数据库、多线程、网络和多媒体等模块的使用。每个编程主题都精心设计了完整的实例程序。通过阅读本书,可了解Qt C++开发应用程序所需的基本技术。本书适合具有C++语言编程基础,希望应用Qt C++开发跨平台应用程序的读者阅读。 目录 第1章认识Qt1 1.1Qt简介1 1.2Qt的获取与安装1 1.2.1Qt的许可类型1 1.2.2Qt的版本2 1.2.3Qt的下载与安装2 1.3QtCreator初步使用5 1.3.1QtCreator的界面组成5 1.3.2QtCreator的设置6 1.4编写一个HelloWorld程序7 1.4.1新建一个项目7 1.4.2项目的文件组成和管理10 1.4.3项目的编译、调试与运行11 1.5在VisualStudio里使用Qt13 第2章GUI应用程序设计基础16 2.1UI文件设计与运行机制16 2.1.1项目文件组成16 2.1.2项目管理文件16 2.1.3界面文件17 2.1.4主函数文件19 2.1.5窗体相关的文件20 2.2可视化UI设计25 2.2.1实例程序功能26 2.2.2界面组件布局26 2.2.3信号与槽29 2.2.4可视化生成槽函数原型和框架30 2.3代码化UI设计34 2.3.1实例功能34 2.3.2界面创建34 2.3.3信号与槽的关联37 2.4混合方式UI设计37 2.4.1设计目的37 2.4.2创建项目并添加资源文件38 2.4.3设计Action39 2.4.4设计菜单和工具栏41 2.4.5代码创建其他界面组件44 2.4.6Action的功能实现45 2.4.7手工创建的组件的信号与槽47 2.4.8为应用程序设置图标48 2.5QtCreator使用技巧48 第3章Qt类库概述50 3.1Qt核心特点50 3.1.1概述50 3.1.2元对象系统50 3.1.3属性系统52 3.1.4信号与槽53 3.1.5元对象特性测试实例55 3.2Qt全局定义59 3.2.1数据类型定义60 3.2.2函数60 3.2.3宏定义61 3.3容器类62 3.3.1容器类概述62 3.3.2顺序容器类63 3.3.3关联容器类64 3.4容器类的迭代66 3.4.1Java类型迭代器66 3.4.2STL类型迭代器68 3.4.3foreach关键字69 3.5Qt类库的模块70 3.5.1Qt基本模块71 3.5.2Qt附加模块71 3.5.3增值模块72 3.5.4技术预览模块72 3.5.5Qt工具73 第4章常用界面设计组件74 4.1字符串与输入输出74 4.1.1字符串与数值之间的转换74 4.1.2QString的常用功能76 4.2SpinBox的使用78 4.3其他数值输入和显示组件80 4.3.1实例功能80 4.3.2各组件的主要功能和属性80 4.3.3实例功能的代码实现82 4.4时间日期与定时器84 4.4.1时间日期相关的类84 4.4.2日期时间数据与字符串之间的转换84 4.4.3QCalendarWidget日历组件87 4.4.4定时器的使用87 4.5QComboBox和QPlainTextEdit89 4.5.1实例功能概述89 4.5.2QComboBox的使用89 4.5.3QPlainTextEdit的使用91 4.6QListWidget和QToolButton93 4.6.1实例功能简介93 4.6.2界面设计94 4.6.3QListWidget的操作97 4.6.4QToolButton与下拉式菜单99 4.6.5创建右键快捷菜单101 4.7QTreeWidget和QDockWidget102 4.7.1实例功能概述102 4.7.2界面设计103 4.7.3QTreeWidget操作105 4.7.4QLabel和Qpixmap显示图片110 4.7.5QDockWidget的操作111 4.8QTableWidget的使用112 4.8.1QTableWidget概述112 4.8.2界面设计与初始化113 4.8.3QTableWidget操作114 第5章Model/View结构120 5.1Model/View结构120 5.1.1Model/View基本原理120 5.1.2数据模型121 5.1.3视图组件122 5.1.4代理122 5.1.5Model/View结构的一些概念123 5.2QFileSystemModel125 5.2.1QFileSystemModel类的基本功能125 5.2.2QFileSystemModel的使用125 5.3QStringListModel127 5.3.1QstringListModel功能概述127 5.3.2QStringListModel的使用127 5.4QStandardItemModel130 5.4.1功能概述130 5.4.2界面设计与主窗口类定义131 5.4.3QStandardItemModel的使用132 5.5自定义代理139 5.5.1自定义代理的功能139 5.5.2自定义代理类的基本设计要求139 5.5.3基于QSpinBox的自定义代理类139 5.5.4自定义代理类的使用141 第6章对话框与多窗体设计143 6.1标准对话框143 6.1.1概述143 6.1.2QFileDialog对话框144 6.1.3QColorDialog对话框146 6.1.4QFontDialog对话框146 6.1.5QInputDialog标准输入对话框147 6.1.6QMessageBox消息对话框149 6.2自定义对话框及其调用150 6.2.1对话框的不同调用方式150 6.2.2对话框QWDialogSize的创建和使用152 6.2.3对话框QWDialogHeaders的创建和使用154 6.2.4对话框QWDialogLocate的创建与使用156 6.2.5利用信号与槽实现交互操作160 6.3多窗体应用程序设计162 6.3.1主要的窗体类及其用途162 6.3.2窗体类重要特性的设置163 6.3.3多窗口应用程序的设计165 6.4MDI应用程序设计170 6.4.1MDI简介170 6.4.2文档窗口类QFormDoc的设计171 6.4.3MDI主窗口设计与子窗口的使用173 6.5Splash与登录窗口176 6.5.1实例功能概述176 6.5.2对话框界面设计和类定义177 6.5.3QDlgLogin类功能实现178 6.5.4Splash登录窗口的使用181 第7章文件系统和文件读写182 7.1文本文件读写182 7.1.1实例功能概述182 7.1.2QFile读写文本文件182 7.1.3QFile和QTextStream结合读写文本文件184 7.1.4解决中文乱码的问题185 7.2二进制文件读写186 7.2.1实例功能概述186 7.2.2Qt预定义编码文件的读写187 7.2.3标准编码文件的读写192 7.3文件目录操作197 7.3.1文件目录操作相关的类197 7.3.2实例概述197 7.3.3QCoreApplication类199 7.3.4QFile类199 7.3.5QFileInfo类200 7.3.6QDir类201 7.3.7QTemporaryDir和QTemporaryFile203 7.3.8QFileSystemWatcher类203 第8章绘图206 8.1QPainter基本绘图206 8.1.1QPainter绘图系统206 8.1.2QPen的主要功能209 8.1.3QBrush的主要功能210 8.1.4渐变填充212 8.1.5QPainter绘制基本图形元件214 8.2坐标系统和坐标变换217 8.2.1坐标变换函数217 8.2.2坐标变换绘图实例218 8.2.3视口和窗口221 8.2.4绘图叠加的效果223 8.3GraphicsView绘图架构224 8.3.1场景、视图与图形项224 8.3.2GraphicsView的坐标系统226 8.3.3GraphicsView相关的类227 8.3.4GraphicsView程序基本结构和功能实现229 8.3.5GraphicsView绘图程序实例235 第9章QtCharts247 9.1QtCharts概述247 9.1.1QtCharts模块247 9.1.2一个简单的QChart绘图程序248 9.1.3图表的主要组成部分249 9.2QChart绘制折线图253 9.2.1实例功能253 9.2.2主窗口类定义和初始化253 9.2.3画笔设置对话框QWDialogPen256 9.2.4QChart的设置257 9.2.5QLineSeries序列的设置259 9.2.6QValueAxis坐标轴的设置261 9.3各种常见图表的绘制263 9.3.1实例功能概述263 9.3.2数据准备264 9.3.3柱状图267 9.3.4饼图270 9.3.5堆叠柱状图273 9.3.6百分比柱状图274 9.3.7散点图和光滑曲线图276 9.4图表的其他操作277 9.4.1实例功能概述277 9.4.2自定义QWChartView类278 9.4.3主窗口类的设计280 9.4.4实时显示光标处的数值281 9.4.5QLegendMarker的使用282 9.4.6图表的缩放283 第10章DataVisualization284 10.1DataVisualization模块概述284 10.2三维柱状图285 10.2.1实例功能285 10.2.2主窗口设计286 10.2.3三维柱状图的创建287 10.2.4三维柱状图属性设置289 10.3三维散点图293 10.3.1绘制三维散点图293 10.3.2三维坐标轴的方向296 10.3.3散点形状与大小296 10.4三维曲面绘图296 10.4.1三维曲面图296 10.4.2三维地形图301 第11章数据库305 11.1QtSQL模块概述305 11.1.1QtSQL支持的数据库305 11.1.2SQLite数据库306 11.1.3QtSQL模块的主要类308 11.2QSqlTableModel的使用309 11.2.1实例功能309 11.2.2主窗口设计310 11.2.3打开数据表311 11.2.4添加、插入与删除记录319 11.2.5保存与取消修改319 11.2.6设置和清除照片320 11.2.7数据记录的遍历321 11.2.8记录排序322 11.2.9记录过滤322 11.3QSqlQueryModel的使用323 11.3.1QSqlQueryModel功能概述323 11.3.2使用QSqlQueryModel实现数据查询323 11.4QSqlQuery的使用327 11.4.1QSqlQuery基本用法327 11.4.2QSqlQueryModel和QSqlQuery联合使用328 11.5QSqlRelationalTableModel的使用336 11.5.1关系型数据表和实例功能336 11.5.2关系型数据模型功能实现338 第12章自定义插件和库340 12.1自定义Widget组件340 12.1.1自定义Widget子类QmyBattery340 12.1.2自定义Widget组件的使用343 12.2自定义QtDesigner插件344 12.2.1创建QtDesignerWidget插件项目344 12.2.2插件项目各文件的功能实现346 12.2.3插件的编译与安装349 12.2.4使用自定义插件350 12.2.5使用MSVC编译器输出中文的问题352 12.3创建和使用静态链接库353 12.3.1创建静态链接库353 12.3.2静态链接库的使用354 12.4创建和使用共享库357 12.4.1创建共享库357 12.4.2使用共享库358 第13章多线程362 13.1QThread创建多线程程序362 13.1.1QThread类功能简介362 13.1.2掷骰子的线程QDiceThread363 13.1.3掷骰子的多线程应用程序365 13.2线程同步367 13.2.1线程同步的概念367 13.2.2基于互斥量的线程同步368 13.2.3基于QReadWriteLock的线程同步371 13.2.4基于QWaitCondition的线程同步373 13.2.5基于信号量的线程同步377 第14章网络编程383 14.1主机信息查询383 14.1.1QHostInfo和 QNetworkInterface类383 14.1.2QHostInfo的使用384 14.1.3QNetworkInterface的使用386 14.2TCP通信388 14.2.1TCP通信概述388 14.2.2TCP服务器端程序设计390 14.2.3TCP客户端程序设计395 14.3QUdpSocket实现UDP通信397 14.3.1UDP通信概述397 14.3.2UDP单播和广播398 14.3.3UDP组播402 14.4基于HTTP协议的网络应用程序405 14.4.1实现高层网络操作的类405 14.4.2基于HTTP协议的网络文件下载406 第15章多媒体409 15.1Qt多媒体模块功能概述409 15.2音频播放410 15.2.1使用QMediaPlayer播放音乐文件410 15.2.2使用QSoundEffect和Qsound播放音效文件415 15.3音频输入415 15.3.1使用QAudioRecorder录制音频415 15.3.2使用QAudioInput获取音频输入421 15.4视频播放428 15.4.1在QVideoWidget上播放视频428 15.4.2在QGraphicsVideoItem上播放视频431 15.5摄像头的使用433 15.5.1摄像头控制概述433 15.5.2实例主窗口设计与初始化435 15.5.3QCamera对象创建与控制436 15.5.4QCameraImageCapture抓取静态图片438 15.5.5QMediaRecorder视频录制439 第16章应用程序设计辅助功能441 16.1多语言界面441 16.1.1多语言界面设计概述441 16.1.2tr()函数的使用441 16.1.3生成语言翻译文件442 16.1.4使用QtLinguist翻译ts文件443 16.1.5调用翻译文件改变界面语言444 16.2使用样式表自定义界面446 16.2.1Qt样式表446 16.2.2Qt样式表句法447 16.2.3样式表的使用453 16.3使用QStyle设置界面外观455 16.3.1QStyle的作用455 16.3.2Qt内置样式的使用456 16.4Qt应用程序的发布457 16.4.1应用程序发布方式457 16.4.2Windows平台上的应用程序发布458 |