QT知识体系框架及对应文章汇总

server/2024/9/18 12:53:07/ 标签: qt, 数据库, 知识框架, 目录, UI框架

文章目录

  • IDE用法
  • 基本界面实现
    • 基本控件和窗体
    • 控件布局和定位
    • 应用程序主窗口
    • 界面外观样式实现
    • 事件系统实现
    • 控件窗体关联通信
  • 图形动画
    • 2D图形绘制
    • 3D图形绘制
    • 图形视图框架
    • 动画状态切换
    • 多媒体应用
  • 数据处理和展示
    • 普通文件
    • 特殊文件
    • 模型视图框架
    • 数据库
    • 各种数据结构
  • 通信及部署
    • 进程/线程
    • 通信方式
    • 打包发布部署
    • 插件系统

IDE用法

需要掌握的知识点主要包括以下两方面:
1.IDE的基本用法,以及如何自定义和使用各种快捷键
2.各种工具使用: Qt Assistant QT助手 、 Qt Designer QT设计器 、 Qt Linguist QT语言家

基本界面实现

基本控件和窗体

1.基本控件的使用: QWidget、QPushButton、QLabel、QLineEdit等
2.对话框QDialog(模态对话框–>阻碍相应/非模态对话框)
3.标准对话框: QColorDialog/QFileDialog/QMessageBox/QFontDialog/QErrorMessage等

让Qt窗口保持显示在最前的跨平台解决方案

控件布局和定位

QHBoxLayout(水平布局)、QVBoxLayout(垂直布局)、QGridLayout(网格布局)、QFormLayout、QStackedLayout(栈布局管理器)
QSpitter(窗口分割器)

应用程序主窗口

组成部分: 菜单栏、工具栏、中心部件、状态栏、Docke窗口

界面外观样式实现

通过样式表QSS实现自定义样式(透明窗体、透明圆角等)

Qt窗口实现圆角阴影效果
QT自定义控件的悬浮样式实现
QT自动适配高分屏的解决方案

事件系统实现

1.鼠标事件、键盘事件、定时器事件(点击、悬浮、拖拽)
2.事件的过滤和发送

通过QT的拖拽事件来操作文件

控件窗体关联通信

1.信号和槽通信机制(DirectConnection、QueuedConnection)
2.属性系统(传递数据、指定样式等)
3.元对象系统

QT中使用function+lambda来替代繁琐的信号绑定
QT信号和槽通信机制的使用技巧

图形动画

2D图形绘制

1.重写paint事件

  • 绘制文本、图像、路径(绘制-填充-渐变-抗锯齿等)

QT自绘控件的实现方式

3D图形绘制

1.OpenGL绘制三维模型
2.OpenGL绘制纹理、截图等

采用QT进行OpenGL开发(一)绘制平面图形
采用QT进行OpenGL开发(二)绘制立方体
采用QT进行OpenGL开发(三)着色器编程
使用Qt进行OpenGL开发-绘制简单矩形
Qt OpenGL绘制旋转的立方体
Qt OpenGL 绘制复合纹理图样
Qt OpenGL二次渲染实现滤镜效果
Qt OpenGL实现截图的方法大汇总

图形视图框架

1.视图、场景、图元
2.坐标体系事件处理

QGraphicsScene中嵌入自定义窗口
QGraphicsView通过鼠标操作来绘制图元
QGraphicsView图形视图框架使用(一)坐标变换
QGraphicsView图形视图框架使用(二)图形交互
QGraphicsView图形视图框架使用(三)位移变换和图元定位
QGraphicsView图形视图框架使用(四)自定义Item
QGraphicsView图形视图框架使用(五)渲染优化
QGraphicsView图形视图框架使用(六)图元动画
QGrahicsView中视图定位-状态重绘-碰撞监测-层次关系

动画状态切换

1.单一动画

  • QPropertyAnimation

2.动画组

  • QSequentialAnimationGroup(串联动画)、QParallelAnimationGroup(并联动画)

3.状态和过渡

  • 状态的保持、切换、恢复和特效

多媒体应用

QT的音视频功能不是特别强,建议专业应用使用FFmpeg
1.音视频功能类: QMediaPlayer、QMovie、QCamera、QAudioRecorder
2.可以实现的功能(音视频播放和录制)

数据处理和展示

普通文件

1.QFile读取文件\QTextStream读取文本流; QDataStream读取二进制流

特殊文件

处理特殊文集:ini、XML、json等

通过序列化操作实现QT程序状态的本地持久化
QT项目中通过数据封装实现Json结构和数据类之间的相互转换

模型视图框架

Model–>Delegate–>View框架
QListWidget、QTreeWidget、QTableWidget

QT中Model-View-Delegate委托代理机制用法介绍
Qt5中的model-view-delegate
模型-视图-代理(Model-View-Delegate)实例

数据库

各种数据库的处理

通过封装数据库操作接口实现QT对象本地持久化
QT通过数据模型操作数据库中的数据

各种数据结构

字符串: QString、正则表达式
容器类: QSet、QList、QVector、QQueued、QStacked、QMap、QMultiMap、QHash、QMultiHash等
自适应类: QByteArray、QVariant

通过QT实现C++和JavaScript混合编程
QT彻底解决中文乱码问题(代码、普通文件、ini文件、路径)

通信及部署

进程/线程

1.进程使用QProcess调度
2.线程实现: 重写QThread、QObject->movetoThread、QTreadPool、QConcurrent

配置QT程序的命令行参数
采用QT实现并行计算框架
通过引入线程池提升QT程序的并发性能
QtConcurrent实现多线程并行计算

通信方式

1.UDP\TCP通信
2.HTTP通信
3.FTP通信
4.QtWebEngine

Qt使用Http协议进行通信
Qt+libhv实现各类网络通信方式(TCP-UDP-HTTP-WebSocket)
通过QT管理网络状态和网络连接
Qt中使用共享内存实现进程间的通信
dbus总线通信的原理和使用

打包发布部署

1.搭建工程项目
2.提取程序的依赖项,打包发布
3.程序测试工程

采用QTest进行数据集测试-性能测试-GUI测试
QT日志模块的个性化使用
QT项目搭建完整的单元测试流程
分析一个跨平台QT项目(获取系统CPU使用率和内存占用率)
快速搭建一个简洁高效的跨平台Qt项目工程
使用AppImage格式打包独立运行的Qt-Linux程序
QT项目自动化构建和打包
QT程序设置程序详细信息
QT获取计算机的硬件信息

插件系统

1.自定义插件
2.输入法插件等

Qt插件之自定义插件构建和使用
Qt插件之Qt Designer插件实现
Qt插件之输入法插件的构建和使用(一)
Qt插件之输入法插件的构建和使用(二)


http://www.ppmy.cn/server/31041.html

相关文章

通讯录(基于单链表)

通讯录(基于单链表) 我们知道 链表是由一个个节点组成的,我们让节点的数据域去存储一个结构体 这个结构体是存储联络人数据的一个结构体,里面放着许多信息: // 要在链表的每一个节点中存储联系人数据 // 那我们就要…

【MATLAB】解决不同版本MATLAB出现中文乱码的问题

解决不同版本MATLAB出现中文乱码的问题 方法1:更改保存类型为GBK方法2:记事本打开方法3:Notepad参考 低版本matlab打开高版本Matlab的.m文件时,出现中文乱码问题。比如下图: 出现原因为: 编码格式不统一问…

新手如何用Postman做接口自动化测试?

1、什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来,本质是用代码去测试另一段代码,属于一种软件开发工作,已…

LabVIEW换智能仿真三相电能表研制

LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下,确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术,具有灵活状态切换功能的智能仿真三相电能表,旨在通过技术创新提高电能计量人员的培训…

021、Python+fastapi,第一个Python项目走向第21步:ubuntu 24.04 docker 安装mysql8、redis(二)

系列文章目录 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 安装redis 我会以三种方式安装, 第一、直接最简单安装,适用于测试环境玩玩 第二、conf配置安装 第三、集群环境安装 一…

ubuntu ros noetic 编译 ORB_SLAM2 过程记录

1. 连接 eigen库 sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen 2. opencvx 修改 CMakeList.txt 中的 find_package open cv版本 修改 include/orbExtracter.h 文件为&#xff1a; //#include <opencv2/opencv.hpp> #include<opencv2/imgproc/imgpro…

【MRI重建】基于径向采样的GRASP重建实现(matlab)

关于 对比增强MRI和弥散MRI成像,对于时间分辨率要求都比较高,为了捕获高时间空间分辨率,这里使用GRASP方法,重建radial径向采样的MR数据。使用的稀疏正则项为 temporal total variation。 相关文章 https://onlinelibrary.wiley.com/doi/10.1002/mrm.24980 https://onl…

AI图书推荐:如何使用ChatGPT来提升逻辑分析能力

在一个日益由数据和技术驱动的世界中&#xff0c;进行逻辑思考和做出明智决策的能力比以往任何时候都更为关键。逻辑分析构成了理性思考的基础&#xff0c;引导我们穿越复杂问题&#xff0c;并帮助我们得出合理的结论。随着人工智能&#xff08;AI&#xff09;的出现&#xff0…

Android数据恢复软件快速比较:Android数据恢复的7最佳工具

您在 Android 设备上保留哪些类型的数据&#xff1f;如果您和大多数人一样&#xff0c;那么您可能已经列出了文档、照片、视频和音频文件。如果您使用智能手机或平板电脑的时间足够长&#xff0c;我们愿意打赌您拥有Android数据丢失的第一手经验。 幸运的是&#xff0c;我们也…

【busybox记录】【shell指令】wc

目录 内容来源&#xff1a; 【GUN】【wc】指令介绍 【busybox】【wc】指令介绍 【linux】【wc】指令介绍 使用示例&#xff1a; 统计 - 默认打印 统计 - 只打印字节数 统计 - 只打印字符数 统计 - 只打印单词数&#xff08;由空白字符开始组成的非空白字符的非空序列&…

嵌入式全栈开发学习笔记---Linux基本命令1

目录 cd加路径 相对路径是什么 绝对路径是什么 cd后面没有路径 cd- ls -l ls -a ls -al ls加路径 Linux的命令是数不清的&#xff0c;就像很多应用软件一样&#xff0c;随时都有可能被开发出来。 但是我们目前阶段只需要掌握基本的命令就可以了。 上一篇博文中我已经…

SDKMAN!

概述 官网&#xff0c;SDKMAN是一款管理多版本SDK的工具&#xff0c;可以实现在多个版本间的快速切换。 其他特性&#xff1a; 易用&#xff1a;安装SDK不再需要去Google想安装的某个软件的官网的下载页&#xff0c;或找其他下载页面&#xff0c;然后下载安装包、解压、设置…

如何查看我的Docker 容器和 `app.py` 脚本有足够的权限来读取 `config.json` 文件

要检查 Docker 容器和 app.py 脚本是否具有读取 config.json 文件的足够权限&#xff0c;你可以按照以下步骤操作&#xff1a; 检查宿主机上的文件权限&#xff1a; 在宿主机上&#xff0c;使用 ls -l 命令查看 config.json 文件的权限。 ls -l /path/to/config.json确保该文件…

vscode中用node的终端安装模块

1 安装模块 在控制台输入 npm install crypto-js 创建好了会多几个文件 crypto-js是我们刚刚装的包&#xff0c;用于hash算法和aes des算法 2 package.json文件的作用 当我们把node-modules删了&#xff0c;或者是新建一个文件后我们不用把这个node-modules拷贝过去 在控制台…

个人对行为型设计模式的理解 @by_TWJ

目录 1. 访问者模式2. 迭代器模式3. 观察者模式4. 模板模式5. 状态模式6. 备忘录模式7. 策略模式8. 解释器模式9. 责任链模式10. 命令模式11. 中介者模式 研究了一下&#xff0c;我为了方便理解&#xff0c;对它们进行了分类&#xff1a; 针对请求者与执行者关系方面 1对多 - 责…

革新突破:MIT与加州理工联手推出KAN,一举超越传统MLP模型!

KAN指的是Kolmogorov-Arnold Networks&#xff0c;这是一种深度学习模型&#xff0c;旨在作为多层感知机&#xff08;MLP&#xff09;的一个有前景的替代方案。KANs的灵感来源于科尔莫哥洛夫-阿诺德表示定理&#xff0c;与传统的MLPs不同&#xff0c;KANs在边&#xff08;即“权…

使用指针实现常见排序算法选择排序,直接插入排序和冒泡排序

# include<stdio.h> void selectSort(int *p,int n) /*选择排序*/ {int i,j,* pt,temp; for(i0;i<n;i){ ptpi; for(ji1;j<n;j){ if( * (pj)<*pt) ptpj; /*记录最小数组元素位置/ } temp * pt, * pt* (pi),* (pi)temp;&#xff5d;&#xff5d; /*…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日&#xff0c;全球——在塑造区块链网络的战略联盟的过程中&#xff0c;Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack&#xff0c;成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性&#xff0c;来重构区…

55.基于SpringBoot + Vue实现的前后端分离-旅游管理系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的旅游管理系统设计与实现管理工作系统…

【数据结构】Map和Set(1)

&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;个人主页&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388; &#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;数据结构专栏&#x1f388;&#x1f388;&#x1f388;&…