
深入浅出C++ Qt开发技术
文章平均质量分 83
本专栏《深入浅出C++ Qt开发技术》将会系统介绍C++ Qt PC客户端开发技术,详细介绍Qt窗口、控件自定义,多线程,进程通信、图表、前后端http交互、Qt Web混合开发技术、Qt qss界面美化,解决Qt常见的疑难杂症,定制PC客户端应用,让世界上没有难写的Qt界面。
优惠券已抵扣
余额抵扣
还需支付
¥129.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
令狐掌门
C++程序员,出版过《C++零基础入门视频教程》、《Qt高级进阶视频教程》、《C++ Qt6 QtQuick/QML入门进阶视频教程》、《OBS源码分析与桌面录制视频教程》、《PyQt PySide6零基础入门与项目实战》。
展开
-
C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享
介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。原创 2023-09-21 23:00:33 · 4385 阅读 · 0 评论 -
C++ Qt高级开发视频教程
C++ Qt高级开发视频教程原创 2022-07-11 09:53:42 · 7565 阅读 · 14 评论 -
C++ Qt常见面试题(10):Qt D指针(d_ptr)与Q指针(q_ptr)
Pimpl模式是一种常见的编程技巧,它通过将类的私有数据和实现放入一个独立的类中,从而避免了类实现的改变影响到类的用户代码。Pimpl模式通常会用到一个指针来指向这个独立的类。d_ptr和q_ptr是Qt用来实现Pimpl设计模式的工具,帮助Qt实现类的封装性、二进制兼容性和优化编译性能。通过在Qt类中使用d_ptr和q_ptr,可以将类的接口与实现分离,使得外部代码不需要关心类的实现细节。这种设计方式通常用于大型项目中,尤其是在Qt的库中广泛使用,可以避免因为实现变动导致的二进制不兼容问题。原创 2025-02-28 09:00:00 · 52 阅读 · 0 评论 -
C++ Qt常见面试题(9):TCP粘包问题以及解决办法
可以确保接收端能够正确区分并处理完整的消息,避免粘包问题。这样即使多个消息被TCP合并到一个包中,接收端也能够根据长度字段正确地解析出每个完整的消息。如果发送方连续发送多个数据包,而接收方在接收时没有办法区分每个数据包的边界,可能会发生粘包现象。:Nagle算法会尽量减少发送小的数据包,如果发送的数据非常小,TCP可能会把多个小数据包合并成一个大的数据包发送。:操作系统的内核会进行一定的缓存处理,以优化网络传输,可能会合并多个小包,造成粘包现象。,通过定义明确的包结构,使得每个包都能够被正确识别和解析。原创 2025-02-28 08:00:00 · 70 阅读 · 0 评论 -
C++ Qt常见面试题(8):C++ Qt中的线程同步与互斥
和QMutex的组合非常适合实现生产者-消费者模型,或任何需要线程等待某些条件满足的场景。QMutex用于保护共享资源的访问,而用于在资源条件不满足时让线程等待,并在条件满足时唤醒等待的线程。原创 2025-02-28 00:00:00 · 76 阅读 · 0 评论 -
C++ Qt常见面试题(7):QPainter的基本用法
QPainter是 Qt 中功能强大的 2D 图形绘制工具,适用于各种绘图需求。通过对画笔、画刷、字体和坐标变换的灵活控制,开发者可以轻松绘制各种图形元素。上绘制各种图形内容(如直线、矩形、文字、图片等)。它是 Qt 的 2D 图形绘制的核心工具,广泛用于自定义控件、绘制背景、图形编辑器等场景。支持坐标变换(平移、旋转、缩放),可以对绘图进行复杂的几何变换。的基本用法和高级功能,可以满足大多数 2D 绘图需求。是常见的内存绘图设备,可以将绘制结果保存为图片文件。是 Qt 提供的一个强大的绘图类,用于在。原创 2025-02-27 09:00:00 · 49 阅读 · 0 评论 -
C++ Qt常见面试题(6):QThread 和 QtConcurrent 之间有何区别
QThread 和 QtConcurrent是Qt中两种用于实现多线程编程的工具,它们设计目标和适用场景不同。以下是它们的详细对比和使用说明。通过将对象移动到线程中运行逻辑,适合需要运行事件循环的场景。用于运行普通函数或任务,返回一个。用于并行处理容器中的数据。方法来定义线程的逻辑。对象以监控任务状态。原创 2025-02-27 08:30:00 · 46 阅读 · 0 评论 -
C++ Qt常见面试题(5):Qt信号槽与C++函数指针的区别
都是用于实现程序中函数调用或消息传递的机制。然而,它们的设计目标、使用场景、功能和灵活性有很大的区别。以下是它们的详细比较及代码示例。以下示例展示了如何使用 Qt 信号与槽和 C++ 函数指针分别实现按钮点击回调。以下是一个 Qt 信号与槽的简单示例,展示如何在按钮点击时触发槽函数。以下是一个使用函数指针实现类似信号槽机制的示例。原创 2025-02-27 08:00:00 · 160 阅读 · 0 评论 -
C++ Qt常见面试题(4):Qt事件过滤器
Qt 的事件过滤器是一种强大的机制,适用于需要拦截和处理对象事件的场景。通过自定义事件过滤器并将其安装到目标对象或全局应用程序上,可以实现灵活的事件处理逻辑。在使用时,应注意合理设计过滤器逻辑,避免性能问题或不必要的事件拦截。)提供了一种机制,可以拦截并处理对象的事件(如鼠标事件、键盘事件等),在事件到达目标对象之前对其进行预处理。以下代码实现了一个简单的事件过滤器,用于拦截按钮的鼠标点击事件,并在点击时输出相关信息。在 Qt 中,事件过滤器(原创 2025-02-26 21:26:09 · 191 阅读 · 0 评论 -
C++ Qt常见面试题(3):Qt内存管理机制
Qt 内存管理机制是其框架的重要组成部分,目的是简化开发者对内存的管理,减少内存泄漏的风险,同时提供高效的资源使用方式。实现了一种自动化的内存管理方式,极大地减少了内存泄漏的风险。开发者只需负责顶层父对象的生命周期,其子对象会自动销毁。的设计,通过智能管理对象的生命周期来实现自动化的内存释放。以下是 Qt 内存管理机制的详细介绍。在开发中合理使用这些机制和工具,可以高效、安全地管理内存资源,避免常见的内存问题。从 Qt 5 开始,Qt 引入了智能指针来简化内存管理,特别是对非。Qt 的内存管理机制以。原创 2025-02-26 21:15:37 · 263 阅读 · 0 评论 -
C++ Qt常见面试题(2):QT中的文件流(QTextStream)和数据流(QDataStream)的区别
是两种常用的流类,用于通过文件或其他 I/O 设备(如网络、内存)读写数据。虽然它们都可以用来操作数据,但它们的设计目标和使用场景不同。根据实际应用场景选择合适的流工具,可以更高效地完成任务。原创 2025-02-26 21:12:23 · 243 阅读 · 0 评论 -
C++ Qt常见面试题(1):Qt信号槽的理解
C++ 中的 Qt 信号槽机制是 Qt 框架中用于实现组件间通信的核心机制之一。它是一种观察者模式的实现,提供了一种安全、灵活且松耦合的方式来连接对象和处理事件。下面从10个方面来介绍C++ Qt信号槽的原理及使用技巧。原创 2025-02-26 21:05:35 · 424 阅读 · 0 评论 -
C++ Qt OpenGL渲染FFmpeg解码后的视频
本篇博客介绍使用OpenGL渲染FFmpeg解码后的视频,涉及到QOpenGLWidget、QOpenGLFunctions、OpenGL shader以及纹理相关。原创 2025-02-26 20:28:18 · 849 阅读 · 0 评论 -
QWindow类使用介绍与代码演示
QSurface是一个抽象类,它本身不能直接实例化。它的主要作用是为其他类(如QWindow)提供通用接口,用于获取与图形渲染相关的表面信息和资源管理。QSurface作为一个抽象类,提供了图形渲染表面的基本接口,它的子类如QWindow和则实现了具体的窗口和渲染表面管理。QSurface的设计使得 Qt 可以与不同的渲染系统(OpenGL、Vulkan)以及不同的操作系统平台进行无缝集成。对于开发需要底层图形渲染的应用,QSurface提供了一个非常强大的接口和灵活的抽象层。原创 2025-01-26 10:13:15 · 79 阅读 · 0 评论 -
Qt编译出现error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known
如果有其它类型出现类似的错误,使用Q_DECLARE_METATYPE来声明即可。原创 2023-08-17 23:18:10 · 889 阅读 · 0 评论 -
Qt Tcp通信,简单聊天程序的编写
Qt Tcp通信和windows的类似,分服务端和客户端,模型如下 windows的Tcp通信可以看这篇文章:【请点击查看】 Qt的Tcp主要涉及到两类,QTcpServer和QTcpSocket, 对于服务端需要两个socket, 一个用于监听客户端连接,也就是QTcpServer,另一个用于和客户端通信, 也就是QTcpSocket; 客户端只需要一个socket. 写一个简单的demo, 服务端和客户端各用一个窗口表示 代码大同小异,服...原创 2020-08-23 16:47:17 · 1827 阅读 · 2 评论 -
Qt鼠标相对位置、绝对位置、窗口位置、控件位置、控件大小、控件绝对位置
在Qt界面开始时,有时需要根据鼠标位置,控件位置来确定小窗口的弹出位置,本篇博客来分析Qt的各种位置。 先声明两个名词:绝对位置:相对于桌面窗口原点(0,0)的位置相对位置:相对于应用程序原点(0,0)的位置坐标系 在讨论各种位置之前,我们需要了解电脑桌面坐标系、应用程序坐标系。一般都是规定左上角为坐标原点,水平向右为x正,竖直向下为y正,如下图: 比如我的电脑屏幕是2500*1600,对于桌面坐标系,左边是0,右边是2500,上面是0,下面是1600。 创建一个Qt GUI原创 2021-09-04 16:06:59 · 13858 阅读 · 4 评论 -
Qt定时器QTimer使用教程与代码演示
Qt提供了定时器类QTimer, 在使用时需要包含头文件#include <QTimer>QTimer类方法介绍:void start(int msec); 开启定时器,定时间隔的msec毫秒void stop(); 结束定时QTimer信号:void timeout(QPrivateSignal); 在链接定时器时,需要绑定该信号QTimer的基本使用下面介绍如何使用Qt定时器实现一个秒表。新建一个Qt MainWindow项目,界面如下:时间的显示用的LCD控原创 2021-11-20 17:42:59 · 7538 阅读 · 0 评论 -
QCustomPlot使用教程与代码演示
QCustomPlot是C++ Qt数据可视化组件,可以绘制各种动态静态曲线,散点图,主状态等,功能和QCharts类。 官网:https://www.qcustomplot.com/index.php/introduction 最新的版本已经支持到Qt6.0,如下图QCustomPlot转换成矢量图可以导出各种格式, 比如PDF文件和光栅图像像PNG, JPG, BMP。 在Qt应用程序时,QCustomPlot是实时数据显示比较好的解决方案。例如下面是QCusto原创 2021-04-01 12:32:11 · 1732 阅读 · 1 评论 -
Qt CEF融合技QCefView使用教程
如果从事C++客户端开发,对CEF应该不陌生,当C++界面需要和web交互时,CEF是很好的解决方案,当然Qt也提供了QWebEngineView来进行web交互,最近在万兴喵影的安装目录看到了QCefView.dll,之前也听说过这个库,没在意,没想到还真有人用到项目里面,于是决定自己编译写个demo看看......原创 2021-12-11 00:34:34 · 14402 阅读 · 14 评论 -
Qt拖拽文件到窗口、快捷方式打开
大部分客户端都支持拖拽文件的功能,本篇博客介绍Qt如何实现文件拖拽到窗口、快捷方式打开,以我的开源视频播放器项目为例,介绍拖拽视频到播放器窗口打开。如果是管理员权限,那么Qt拖拽文件的功能将被禁止使用,如果项目必须要用管理权限,可以考虑将管理员权限的功能独立为子进程,主进程是普通权限即可。如果有多层视频窗口该怎么写drag事件呢,比如主窗口上还加了好几层窗口,我这里是写到了视频播放窗口,然后将视频列表信息发信号到主窗口进行播放。当拖拽多个视频时,右侧播放列表会展开。(2)重写关于拖拽的事件。原创 2023-10-15 13:56:07 · 1147 阅读 · 2 评论 -
Win11 CLion Qt开发探索
本篇博客介绍在Win11上使用CLion来编写Qt QWidget项目。原创 2024-11-05 19:00:05 · 1247 阅读 · 0 评论 -
C++ Qt QTextBrowser使用方法总结
要清空 QTextBrowser 中的显示文本,你可以使用 clear() 方法。调用 clear() 方法将删除 QTextBrowser 中的所有文本内容。在这个示例中,当单击按钮时,clicked 信号触发 QTextBrowser 的 clear() 槽,从而清空 QTextBrowser 中的文本内容。原创 2024-11-21 15:45:41 · 334 阅读 · 0 评论 -
QComboBox下拉框选项添加QCheckBox
本篇博客介绍如何在QComboBox下拉框选项里添加QCheckBox,代码在C++ Qt6.5.3通过测试,可用。原创 2024-11-19 18:42:56 · 149 阅读 · 0 评论 -
C++ Qt进程间通信机制之QRO、QRemoteObjectHost
Qt高级开发视频教程C++零基础入门视频教程PyQt PySide6零基础入门与项目实战本篇博客介绍使用QRO实现Qt应用程序进程间通信。本篇博客代码在Qt5.15.2测试通过,可用。一般谈到进程间通信,都是共享内存,消息队列,socket等,本篇博客介绍的QRO也就是QRemoteObjectHost是Qt基于socket封装的进程间通信技术,并且加入了Qt信号机制,比其它基于socket的进程间通信技术更灵活。原创 2024-08-30 22:17:54 · 1484 阅读 · 0 评论 -
C++ Qt实现http url启动本地应用程序
如果是实际开发,在项目发布制作安装包时,可以使用NSIS或Inno Setup等打包工具将上面的注册表信息写到打包脚本里,当用户双击安装应用程序时,就会将上述信息写到注册表,上面路径需要替换为你的实际应用程序安装的路径。特别注意:应用程序的反斜杠别搞错了!!!自己测试的话双击register_protocol.reg文件,将信息导入注册表。原创 2024-06-05 18:20:12 · 552 阅读 · 0 评论 -
C++ Qt里如何使用std::thread
本篇博客介绍如何在C++ Qt项目里使用std::thread,以及父子线程之间的交互方法。原创 2024-03-15 22:10:39 · 489 阅读 · 0 评论 -
在Qt代码中使用Windows事件机制WaitForMultipleObjects、SetEvent
在Qt开发客户端时,经常使用信号槽来处理控件或窗口之间的事件,如果是Windows系统,也可以用windows事件来代替Qt的信号槽,本篇博客来介绍这种用法。原创 2024-01-08 21:20:10 · 1417 阅读 · 0 评论 -
QLinkedList用法介绍与代码演示
或者您有特定的理由需要使用它(例如,与老版本的Qt代码兼容),下面是一个基本的用法示例。的实例,用于存储整数,并演示了如何添加元素、迭代元素以及如何添加和移除链表头部和尾部的元素。是Qt框架中的一个容器类,它实现了一个双向链表。但是值得注意的是,在最新的Qt版本中,可能在Qt的未来版本中被完全移除,建议针对新项目使用标准库中的容器。已经在Qt框架中被弃用,除非有兼容性需求,否则建议使用标准库中的。,因为它提供了类似的功能,并且与C++标准库更兼容。如果你正在使用CMake,确保在你的。原创 2023-12-01 08:44:56 · 619 阅读 · 0 评论 -
QHash使用介绍与代码演示
若要在QHash一个qHash函数,它计算您的类型实例的哈希值。一个相等比较 (operator==),以确定两个实例是否相等。这些函数允许QHash正确地存储和查找键值对。下面是一个自定义类型和相应qHash函数的简单示例:假设您有一个自定义类型public:int id;为了让能够作为QHash的键,您需要定义一个qHash// 在相同命名空间下,通常是在 MyCustomType 类型定义的同一个头文件中。原创 2023-11-30 09:18:14 · 1263 阅读 · 0 评论 -
QTemporaryDir和QTemporaryFile使用介绍和代码演示
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-30 09:17:44 · 1207 阅读 · 0 评论 -
Qt状态机介绍与代码演示
状态机机制在软件开发中是一种设计模式,用来模拟具有一定数量状态的系统或对象。在状态机机制中,系统可以处于特定的状态之一,并且根据输入或事件在不同状态之间转换。每个状态都定义了系统在该状态下可以执行的行为以及它可以转移到的其他状态。有限状态机(Finite State Machines, FSM):这是最常见的类型,用于模拟具有有限数量状态的系统。在有限状态机中,状态、事件(或输入)以及状态转换规则被明确定义。原创 2023-11-28 09:21:58 · 1431 阅读 · 0 评论 -
带你了解Qt框架中的设计模式:命令模式
在Qt中,命令模式通常是通过类及其相关的类,比如QUndoStack和QUndoView,来实现的。命令模式是一种行为设计模式,它将一个操作封装为一个对象,从而允许用户对操作进行参数化、排队、存储和其他操作。在Qt中,命令模式主要用于实现撤销/重做功能。每一个操作(比如文本编辑器中的插入或删除操作)都被封装在一个对象中。每个命令对象知道如何执行自己(通过redo方法)以及如何撤销自己(通过undo方法)。原创 2023-11-28 09:21:20 · 1227 阅读 · 0 评论 -
带你了解Qt框架中的设计模式:观察者模式
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-27 08:55:04 · 1340 阅读 · 0 评论 -
Qt模型视图Model-View架构介绍与优劣分析
在C++或其他面向对象编程语言中,MVC(Model-View-Controller)模式是一种架构设计模式,用于分离应用程序的不同方面,以增加可维护性和灵活性。其核心思想是将应用程序分为三个核心组件:模型(Model),视图(View),和控制器(Controller)。Qt提供了一套跨平台的、事件驱动的机制,非常适合需要在多个平台上提供一致用户体验的应用程序。MFC是一个较为传统的、基于Windows的框架,适合那些已经熟悉Windows消息处理且不需要跨平台的应用程序开发。WPF。原创 2023-11-27 08:54:25 · 1371 阅读 · 0 评论 -
Qt多文档MDI窗口QMdiArea使用介绍
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-27 08:53:33 · 1092 阅读 · 0 评论 -
一文带你了解Qt d指针吊打面试官
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-26 13:26:22 · 1170 阅读 · 0 评论 -
从Qt源码的角度分析Qt对象树与内存管理模式
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-26 13:25:31 · 949 阅读 · 0 评论 -
C++ Qt QString用法详解与代码演示
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-26 13:24:30 · 1075 阅读 · 0 评论 -
Qt OpenGL固定管线与可编程管线
作者:令狐掌门技术交流QQ群:675120140。原创 2023-11-27 12:30:00 · 1700 阅读 · 0 评论