课程培训
QT培训课程-新

Qt培训课程大纲

 

培训对象

  • 具备C++基础、希望学习图形用户界面开发的程序员

  • 从MFC/WPF等框架转向Qt的桌面应用开发者

  • 需要开发跨平台应用程序(Windows/Linux/macOS/嵌入式)的软件工程师

  • 嵌入式系统开发人员(使用Qt/Embedded)

  • 希望掌握Qt Quick/QML进行现代UI开发的前端/移动开发者

 

培训目标
使学员系统掌握Qt框架的核心开发技能,理解信号与槽、元对象系统、事件机制等Qt核心技术原理
;熟练运用Qt Widgets模块进行经典桌面应用开发;掌握Qt Quick/QML进行现代动态UI设计;掌握网络编程、数据库操作、多线程、图形绘制等高级特性;能够独立开发跨平台、高性能、界面美观的应用程序。

 

培训内容介绍

 

一、Qt概述与开发环境搭建

(1)Qt框架简介:Qt发展历史(始于1995年Haavard Nord和Eirik Chambe-Eng开发);Qt作为跨平台C++应用程序框架的核心优势(一套代码,多平台编译);Qt 6新特性与技术演进;Qt的许可类型(商业版/GPL/LGPL)选择

(2)Qt技术生态全景:Qt模块体系(Qt Core/GUI/Widgets/QML/Network/SQL等);Qt在桌面应用、嵌入式系统、移动开发、汽车仪表盘等领域的广泛应用;Qt Creator集成开发环境介绍

(3)开发环境搭建:Qt 6.2.x LTS版本下载与安装;选择编译器套件(MinGW/MSVC)及架构;配置Qt Creator编辑器颜色、字体与快捷键;验证开发环境:创建第一个"Hello World"控制台程序。

(4)Qt工具软件:Qt Assistant(Qt助手)查阅文档;Qt Linguist(Qt语言家)实现国际化;Qt Designer(Qt设计师)可视化设计UI;qmake与CMake构建工具的选择与配置

(5)Qt帮助系统:Qt内置文档的使用;查看类继承关系;搜索示例代码;Qt官方论坛与学习资源

 

二、Qt基础与核心机制

(1)Qt核心模块:Qt Core模块的功能定位;Qt的基本数据类型(qint8/qint16/qint32/qlonglong等);QString类的常用方法(arg()/append()/split()/toInt()等);QChar与QVariant类

(2)Qt容器类:顺序容器(QList/QVector/QLinkedList);关联容器(QMap/QHash/QMultiMap);迭代器(Java风格与STL风格);foreach宏的使用

(3)元对象系统(Meta-Object System):元对象系统的三大基石(QObject类/Q_OBJECT宏/元对象编译器moc);元对象的作用(信号与槽/运行时类型信息/属性系统)

(4)属性系统:Q_PROPERTY宏定义属性;属性的读写与动态添加;属性动画的基础

(5)对象树机制:QObject的父子关系;对象树的自动内存管理;QObject的析构顺序;对象树在实际开发中的应用。

(6)信号与槽(Signals and Slots):信号与槽的设计理念(解耦通信);信号的定义与发射;槽函数的实现;connect函数的五种重载形式;Lambda表达式作为槽函数;信号与槽的连接类型(自动/直接/队列/阻塞队列)。

 

三、Qt Widgets基础

(1)窗口类体系:QWidget作为所有用户界面对象的基类;QMainWindow主窗口框架(菜单栏/工具栏/状态栏/中心部件/停靠窗口);QDialog对话框基类

(2)基础控件(上):QLabel标签(显示文本/图像/动画);QLineEdit单行文本框(输入掩码/验证器/回显模式);QPushButton/QRadioButton/QCheckBox按钮类

(3)基础控件(中):QComboBox下拉列表(添加/插入/删除项);QSpinBox/QDoubleSpinBox数字输入;QSlider/QScrollBar滑动控件;QProgressBar进度条

(4)基础控件(下):QListWidget列表控件;QTableWidget表格控件;QTreeWidget树形控件;QTabWidget选项卡控件;QGroupBox分组框;QFrame框架容器

(5)对话框类:QMessageBox消息对话框(信息/警告/错误/提问/关于);QFileDialog文件对话框;QColorDialog颜色对话框;QFontDialog字体对话框;QInputDialog输入对话框

(6)布局管理:绝对布局的缺点;QHBoxLayout水平布局与QVBoxLayout垂直布局;QGridLayout网格布局;QFormLayout表单布局;布局嵌套与伸缩因子;布局中的边距与间隔

 

四、主窗口与资源管理

(1)菜单设计:QMenuBar菜单栏创建;QMenu菜单项;QAction动作(文本/图标/快捷键/状态提示);菜单的弹出与折叠。

(2)工具栏与状态栏:QToolBar工具栏创建与定制;QToolButton工具按钮;QStatusBar状态栏信息显示(临时/正常/永久消息)

(3)停靠窗口与多文档区:QDockWidget停靠窗口;停靠区域控制(左/右/上/下/浮动);QMdiArea多文档区与QMdiSubWindow子窗口

(4)资源文件(qrc):创建资源文件;添加图片、图标等资源;在代码中引用资源(:/前缀);资源文件的编译与打包。

(5)应用程序图标与版本信息:设置程序图标;添加版本信息;应用程序单实例运行(QSharedMemory)。

 

五、模型/视图编程

(1)模型/视图架构概述:MVC设计模式在Qt中的实现(模型-视图-代理);模型(Model)提供数据;视图(View)显示数据;代理(Delegate)渲染和编辑数据

(2)内置模型:QStringListModel字符串列表模型;QStandardItemModel标准项模型;QFileSystemModel文件系统模型

(3)视图类:QListView列表视图;QTableView表格视图;QTreeView树形视图;视图的选择模式(单选/多选/扩展选择)。

(4)自定义模型:继承QAbstractListModel或QAbstractTableModel;实现rowCount()/columnCount()/data();实现setData()与flags()使模型可编辑;实现插入/删除行。

(5)代理组件:默认代理的行为;继承QStyledItemDelegate自定义代理;实现createEditor()/setEditorData()/setModelData()/updateEditorGeometry()

(6)实际应用:联系人列表(自定义模型+QListView);学生成绩表(QSqlQueryModel+QTableView)

 

六、事件处理

(1)事件机制概述:Qt事件系统的设计原理;事件(QEvent)与信号(Signal)的区别;事件的产生、传递与处理流程

(2)常见事件类型:鼠标事件(QMouseEvent);键盘事件(QKeyEvent);绘图事件(QPaintEvent);定时器事件(QTimerEvent);拖放事件(QDragEnterEvent/QDropEvent)。

(3)事件处理方式:重写特定事件处理函数(mousePressEvent/keyPressEvent等);安装事件过滤器(installEventFilter);重写event()函数;发送自定义事件。

(4)事件过滤器:事件过滤器的工作原理;实现eventFilter()函数;过滤特定类型的事件;全局事件监控的实现。

(5)定时器实现:QObject::startTimer()与timerEvent()的低级定时器;QTimer的高级定时器(单次触发/周期触发);定时器精度与性能考虑。

 

七、图形绘制

(1)Qt绘图系统:QPainter绘图类;QPaintDevice绘图设备(QWidget/QPixmap/QImage);QPaintEngine绘图引擎;绘图事件与重绘机制(update()/repaint())。

(2)画笔与画刷:QPen设置线条颜色、宽度、样式;QBrush设置填充颜色、样式、纹理;渐变画刷(QLinearGradient/QRadialGradient/QConicalGradient)

(3)基本图形绘制:绘制点与线;绘制矩形、椭圆、多边形;绘制弧线与弦;绘制文本;绘制路径(QPainterPath)

(4)图像处理:QImage与QPixmap的区别与转换;加载与保存图像;图像缩放与裁剪;图像格式转换;QPixmap的缓存机制。

(5)坐标变换:坐标系统的基本概念;平移(translate)、旋转(rotate)、缩放(scale)、扭曲(shear)变换;QTransform变换矩阵;变换的保存与恢复(save()/restore())。

(6)双缓冲绘图:双缓冲技术的原理;在QPixmap上进行离屏绘制;避免闪烁的绘制策略。

 

八、Qt Quick与QML

(1)Qt Quick概述:Qt Quick模块的定位(动态UI开发);QML声明式语言的语法特点;Qt Quick与Qt Widgets的对比(性能/开发效率/适用场景)

(2)QML基础语法:import语句导入模块;Item根元素;属性(properties)与信号处理器(signal handlers);JavaScript表达式与函数;QML文档结构

(3)基本QML元素:Rectangle矩形;Text文本;Image图像;MouseArea鼠标交互;Flickable可滑动视图;Flow/Grid/Row/Column布局元素

(4)Qt Quick Controls:ApplicationWindow应用程序窗口;Button/TextField/ComboBox等控件;SwipeView滑动视图;TabBar选项卡;Dialog对话框。

(5)模型与视图在QML中:ListView列表视图;GridView网格视图;ListModel与ListElement定义数据;Delegate代理定制显示;动态视图与XMLListModel。

(6)动画与特效:PropertyAnimation属性动画;NumberAnimation数字动画;ColorAnimation颜色动画;状态(State)与过渡(Transition);粒子系统(Particles)特效。

(7)QML与C++交互:C++对象暴露给QML(qmlRegisterType/setContextProperty);在QML中调用C++函数;C++接收QML信号;QML中创建C++对象

 

九、数据库编程

(1)Qt SQL模块概述:Qt SQL模块的层次结构;支持的数据库驱动(QSQLITE/QMYSQL/QODBC/QPSQL)

(2)数据库连接:添加数据库驱动;创建数据库连接(QSqlDatabase);设置主机名、数据库名、用户名、密码;打开/关闭连接

(3)SQL语句执行:QSqlQuery执行原始SQL;查询结果遍历(next()/value());预处理语句与绑定值;事务处理(transaction()/commit()/rollback())。

(4)高级数据库模型:QSqlQueryModel只读模型;QSqlTableModel可编辑表格模型;QSqlRelationalTableModel关系表模型;模型在视图中的展示。

(5)数据库应用实战:实现数据表的增删改查;数据库事务确保数据一致性;SQLite数据库的嵌入式应用

 

十、文件与数据I/O

(1)Qt文件系统:QFile文件读写;QFileInfo文件信息查询;QDir目录操作(创建/删除/遍历);QTemporaryFile临时文件;QFileSystemWatcher文件系统监控

(2)输入/输出设备:QIODevice基类;QDataStream二进制数据流;QTextStream文本数据流;QBuffer内存缓冲区。

(3)文本文件处理:读写文本文件的多种方式;编码处理(QTextCodec);CSV文件的解析与生成。

(4)二进制文件处理:自定义二进制格式的定义;使用QDataStream读写二进制数据;跨平台数据兼容性问题。

(5)XML处理:XML文档的基本结构;QDomDocument实现DOM解析;QXmlStreamReader/QXmlStreamWriter实现SAX解析;XML文件在配置文件中的应用

(6)JSON处理:JSON数据格式;QJsonDocument/QJsonObject/QJsonArray/QJsonValue;JSON的解析与生成;JSON与QVariant的相互转换。

 

十一、网络编程

(1)Qt网络模块:Qt Network模块的组成;支持的协议(HTTP/FTP/TCP/UDP);网络编程的应用场景

(2)HTTP编程:QNetworkAccessManager网络访问管理器;QNetworkRequest请求;QNetworkReply响应;GET/POST请求的实现;文件下载与上传

(3)TCP编程:QTcpServer服务器端;QTcpSocket客户端;TCP连接的建立与断开;数据的发送与接收;多客户端并发处理

(4)UDP编程:QUdpSocket实现UDP通信;单播、广播与组播;UDP数据包的发送与接收

(5)网络信息查询:QHostInfo主机信息查询;QNetworkInterface网络接口信息;QNetworkAddressEntry地址信息。

(6)高级网络特性:SSL加密通信;WebSocket编程;网络代理配置。

 

十二、多线程编程

(1)Qt线程模型:QThread线程类;线程的生命周期;GUI线程与工作线程的职责分离。

(2)创建线程的两种方式:继承QThread重写run();使用moveToThread()将工作对象移到线程;线程的启动、退出与等待

(3)线程同步:QMutex互斥量;QMutexLocker自动解锁;QReadWriteLock读写锁;QSemaphore信号量;QWaitCondition条件变量

(4)线程间通信:信号与槽跨线程连接(队列连接);跨线程的事件投递;线程安全的数据传递。

(5)QtConcurrent高级并发:QtConcurrent框架简介;QtConcurrent::run()运行函数;QtConcurrent::map()并行处理容器;QtConcurrent::filter()并行过滤。

(6)线程池:QThreadPool线程池;QRunnable可运行任务;线程池的配置与管理。

 

十三、样式表与界面美化

(1)Qt样式表(QSS)概述:QSS的语法与CSS的相似性;样式表的选择器(类型/类/ID/属性);样式表的应用方式(setStyleSheet())。

(2)控件美化实战:按钮样式定制;复选框与单选按钮样式;输入框样式;滚动条样式;菜单与工具栏样式

(3)QSS高级特性:子控件选择器(::drop-down/::indicator等);伪状态选择器(:hover/:pressed/:checked等);样式表继承与覆盖。

(4)主题切换实现:定义多套样式表;运行时动态切换主题;暗色模式/亮色模式的实现。

 

十四、国际化与本地化

(1)国际化基本原理:硬编码字符串的问题;使用tr()函数标记可翻译文本;上下文(context)的作用。

(2)翻译文件管理:lupdate工具提取字符串;Qt Linguist翻译界面;lrelease工具生成QM文件

(3)运行时语言切换:加载翻译文件(QTranslator);重新翻译界面(retranslateUi);动态切换语言的实现。

(4)本地化格式:日期/时间格式本地化;数字格式本地化;货币格式本地化。

 

十五、打包部署与高级主题

(1)应用程序部署:Windows平台依赖库收集(windeployqt);Linux平台打包(AppImage/Deb/RPM);macOS平台打包(Bundle结构)。

(2)安装包制作:NSIS/Inno Setup制作Windows安装包;Linux软件包管理;macOS DMG制作。

(3)Qt插件机制:Qt插件框架概述;编写Qt插件;插件的加载与使用。

(4)Qt与第三方库集成:Qt调用OpenCV进行图像处理;Qt与OpenGL集成实现3D图形;Qt与FFmpeg集成实现音视频处理。

 

十六、综合实战项目

(1)项目一:文本编辑器(Widgets方向):使用QMainWindow构建主框架;实现文件新建/打开/保存/另存为(QFile/QTextStream);文本编辑与格式设置(QTextEdit);查找与替换功能;打印与打印预览

(2)项目二:音乐播放器(多媒体方向):音频播放(QMediaPlayer);播放列表管理(QMediaPlaylist);音量控制与进度条;歌词同步显示;系统托盘与全局快捷键。

(3)项目三:图像浏览器(图形绘制方向):图像加载与显示(QPixmap);缩略图列表(QListWidget+自定义项);图像缩放、旋转与翻转;幻灯片播放;批量格式转换。

(4)项目四:股票行情客户端(网络+数据库方向):HTTP API获取股票数据;数据解析(JSON);数据库本地存储(SQLite);K线图绘制(QPainter);实时行情轮询

(5)项目五:仪表盘应用(Qt Quick方向):QML构建现代UI;Canvas绘制仪表盘指针;C++后台数据模拟;信号与槽跨语言通信;动画与过渡效果






如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表点击在线申请

服务特点:
海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。

专家力量:
中国科学院软件研究所,计算研究所高级研究人员
oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获
报名表下载
联系我们 更多>>

咨询电话010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>