QT相关知识梳理
文章平均质量分 89
QT相关知识梳理
高亚奇
医疗仪器软件、上位机开发者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt6 中 图形渲染架构彻底重构:引入 RHI 那么QOpenGLWidget还能使用吗
Qt6中QOpenGLWidget的现状解析 Qt6引入RHI(Rendering Hardware Interface)后,QOpenGLWidget仍可正常使用且未被废弃,但它独立于RHI体系,直接调用原生OpenGL API。 RHI的作用:为Qt Quick/3D提供跨平台图形抽象(支持Vulkan、Metal等),但不影响传统QWidget应用。 QOpenGLWidget的定位:适用于已有OpenGL代码、QWidget项目或需精细控制渲染的场景,但需注意: 与RHI不兼容:无法混合使用,且ma原创 2025-11-21 17:41:36 · 702 阅读 · 0 评论 -
用QT6开发OpenGL 、ffmpeg 视频播放器程序,用widgets还是qml
本文对比了在Qt6中开发视频播放器时使用QWidget与QML两种方案的优劣。QWidget+QOpenGLWidget方案提供完整的OpenGL控制权,适合高性能视频播放,可直接处理YUV到RGB转换,延迟更低;而QML方案受SceneGraph限制,渲染流程不可控,更适合需要动态UI的消费级应用。文章推荐专业视频播放器采用QWidget方案,并详细说明了基于FFmpeg解码线程、OpenGL渲染和线程同步的实现架构。对于QML方案,则需通过自定义QQuickItem和C++插件实现,但会面临性能瓶颈。技原创 2025-11-21 17:38:58 · 842 阅读 · 0 评论 -
QMediaPlayer 、QVideoSink 的核心功能以及与FFmpeg的区别
本文对比了Qt的QMediaPlayer+QVideoSink与FFmpeg在音视频处理中的差异与应用场景。QMediaPlayer提供高层播放控制,适合快速集成视频播放与简单帧获取;FFmpeg则支持专业级音视频处理,包括编解码、滤镜和流媒体协议。文章详细分析了两者在格式支持、性能控制、开发效率等方面的优劣,并提出了混合架构方案:使用FFmpeg进行底层处理,通过QOpenGLWidget实现高性能渲染,结合Qt的UI优势。最后针对不同应用场景给出了技术选型建议,为开发者提供了清晰的指导框架。原创 2025-11-21 17:09:11 · 679 阅读 · 0 评论 -
QOpenGLWidget、QOpenGLExtraFunctions 对比 glfw 、glad
Qt的QOpenGLWidget+QOpenGLExtraFunctions与原生GLFW+GLAD方案对比: 定位差异: Qt方案:嵌入OpenGL到GUI应用,支持现代OpenGL功能 GLFW+GLAD:纯OpenGL渲染环境,无UI控件 核心区别: 窗口管理:Qt自动集成,GLFW需手动创建 函数加载:Qt自动完成,GLAD需显式调用 渲染循环:Qt事件驱动,GLFW主循环驱动 UI支持:Qt内置丰富控件,GLFW无原生UI 适用场景: 选Qt:需要复杂UI的工业/科学应用 选GLFW:游戏/图形学原创 2025-11-21 14:27:51 · 733 阅读 · 0 评论 -
Qt6 中 图形渲染架构彻底重构,引入 RHI 那么QOpenGLWidget还能使用吗
Qt6中QOpenGLWidget仍然可用且未被RHI取代,它独立于RHI体系,适用于传统QWidget应用中的OpenGL渲染。本文提供了完整的视频播放示例,支持RGB和YUV(NV12/I420)格式,通过QMediaPlayer获取视频帧并渲染到OpenGL纹理。关键点包括: Qt6图形架构中RHI主要服务于QtQuick生态 QOpenGLWidget保持原有工作方式,直接调用OpenGL API 示例展示了视频帧到纹理的转换及YUV-RGB着色器处理 注意macOS平台对OpenGL的弃用问题 该原创 2025-11-21 13:15:58 · 1039 阅读 · 0 评论 -
qt6 相较于qt5做了那些大的、战略性的更改,产生了那些影响
Qt6进行了战略性的现代化重构,主要包括以下重要更新: 图形渲染架构重构 - 引入RHI抽象层,支持Vulkan/Metal/D3D12等现代API,提升跨平台图形性能30-50%,减少对OpenGL的依赖。开发者无需处理API差异,但需适配RHI。 强制使用C++17 - 利用现代特性重构代码,内存占用减少15-20%,API更简洁安全。开发者需升级编译器版本。 QML与属性系统升级 - 引入QProperty实现自动绑定,减少30%样板代码,提升性能20-50%,支持响应式编程。 模块重组 - 移除过时原创 2025-11-19 15:05:02 · 1122 阅读 · 0 评论 -
Qt 为了全面适配 CMake做那那些操作
Qt6对CMake的适配是系统性重构,通过标准化CMake配置文件、重构内部构建系统、开发专用CMake函数与宏等深度改造,实现了从qmake到CMake的全面迁移。关键改造包括:提供标准CMake配置文件实现Qt自身CMake构建;开发qt_add_*系列命令简化Qt特性集成;统一跨平台行为;改进包管理分发;深度集成QtCreator;全面更新文档示例。这些改变使Qt从封闭生态转向开放标准,更好地融入现代C++开发工具链。Qt6通过Qt6Config.cmake等文件定义find_package行为,并通原创 2025-11-11 14:58:31 · 817 阅读 · 0 评论 -
qt为什么转向用cmake放弃qmake
Qt从qmake转向CMake是其构建系统的重大转型,Qt6全面采用CMake。CMake优势包括:强大的跨平台支持、无缝集成第三方库、符合现代C++标准、完整的开发生命周期支持以及更好的模块化管理。Qt放弃qmake因其局限性,自研的qbs也因生态问题失败。CMake已成为C++构建的事实标准,被主流IDE广泛支持。开发者应优先选择CMake构建新项目,旧项目可逐步迁移。Qt这一转型降低维护成本,拥抱开源生态,为开发者提供更强大、标准的构建体验。原创 2025-11-11 14:03:38 · 705 阅读 · 0 评论 -
QT版本 MSVC/MinGW/GCC 含义及如何区分
Qt开发中编译器选择的核心在于ABI兼容性:MSVC(Windows专业开发)、MinGW(Windows轻量项目)和GCC(Linux标准)编译的Qt库必须匹配对应编译器使用。MSVC支持完整Qt功能但需VS环境,MinGW轻量但不支持WebEngine,GCC是Linux默认选项。跨平台项目应使用标准Qt API和CMake构建系统,按平台分别配置编译器(Windows用MSVC,Linux用GCC),确保代码可移植性。开发者需根据目标平台和项目需求选择合适的Qt编译版本。原创 2025-11-11 11:00:10 · 691 阅读 · 0 评论 -
QEventLoop 的使用场景与安全的使用方法
本文介绍了Qt中QEventLoop的核心作用及其作为"双刃剑"的特性。QEventLoop主要用于实现嵌套事件循环,典型场景包括:同步等待异步操作完成(需设置超时)、带事件响应的延时函数、模态对话框实现以及子线程事件处理。文章着重强调了使用风险,如嵌套循环导致的混乱、重入问题、死锁等,并列出了6项安全使用原则:必须设置超时、使用局部变量、确保可靠退出条件等。最后指出在GUI主线程等场景应优先采用异步编程模型,建议将QEventLoop视为特定场景的"逃生舱"而非常规原创 2025-11-07 11:17:58 · 268 阅读 · 0 评论 -
符合 Qt 对象树析构原则且有复杂子线程的程序结构模板
本文提供了一个完整的Qt多线程程序模板,采用主线程(UI)+工作线程架构,支持短任务和长任务并行处理。核心设计特点是:1)使用原子标志位实现长任务可中断退出;2)通过Qt对象树自动管理内存;3)采用协作式退出机制确保线程安全。模板包含UI界面、Worker工作类及其辅助对象,实现了信号槽通信、任务分发和进度反馈功能。所有堆对象通过父子关系自动析构,程序退出时能安全停止长任务并完成待处理短任务。该结构适用于需要同时处理即时任务和耗时操作的应用场景,如数据采集、实时处理等系统。原创 2025-11-07 10:00:06 · 399 阅读 · 0 评论 -
符合 Qt 对象树析构原则的简单的程序结构模板
本文提供了一个基于Qt对象树的安全多线程程序模板,包含主线程(UI+控制逻辑)和子线程(Worker)。关键设计包括:1) 主窗口在栈上创建实现自动析构;2) Worker及内部对象通过对象树自动管理内存;3) 线程安全退出机制(quit()+wait());4) 子线程任务短小快速不阻塞。该模板通过Qt的parent-child机制确保所有堆对象自动释放,无需手动delete,适用于短时后台任务处理(如图像处理、网络请求等)。原创 2025-11-07 09:51:36 · 610 阅读 · 0 评论
分享