
|
课程培训
|
QT培训课程-新
Qt培训课程大纲
培训对象:
培训目标:
培训内容介绍:
一、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,达索等大型公司高级工程师,项目经理,技术支持专家 中科信软培训中心,资深专家或讲师 大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富 多年实际项目经历,大型项目实战案例,热情,乐于技术分享 针对客户实际需求,案例教学,互动式沟通,学有所获 |
|