随笔分类 -  Qt / Qt 进阶

摘要:一、不太推荐使用 QPainter 绘制视频 在 Qidget 上显示视频,一般是通过 paintEvent,由于 QPainter 不是用来渲染视频的,是用来自绘 GUI 的,用的是 CPU 渲染,而不是 GPU,缺乏显卡加速,性能达不到绘制视频的要求。另外,视频绘制也不应该使用事件驱动,使用事件 阅读全文
posted @ 2023-02-22 17:48 fengMisaka 阅读(1907) 评论(0) 推荐(2) 编辑
摘要:一、前言 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡 阅读全文
posted @ 2023-02-22 17:47 fengMisaka 阅读(2364) 评论(0) 推荐(1) 编辑
摘要:一、Qt 窗口绘制原理 最基本的原理是:绘制是在主线程中完成的。主线程是什么,可以理解为就是 main() 函数,main()函数最后需要调用 QApplication 的 exec() 函数,这个 exec() 里面是个死循环,每次循环调用一次 QApplication 的 processEven 阅读全文
posted @ 2023-02-22 17:45 fengMisaka 阅读(3472) 评论(0) 推荐(0) 编辑
摘要:下面实现一个最基本的架构项目。 一、程序的代码目录管理 代码目录,就是你存放源码的目录,一般程序都划分为各种模块来实现,所以为每个模块单独创建一个目录来存放,是比较推荐的存放方式。 工程文件的写法 pro: QT += core gui network greaterThan(QT_MAJOR_VE 阅读全文
posted @ 2023-02-07 11:58 fengMisaka 阅读(1185) 评论(0) 推荐(0) 编辑
摘要:MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型)-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。 View(视图) -是应用程序中处理数据显示的部分。通常视图是依据模型数据 阅读全文
posted @ 2023-02-07 11:55 fengMisaka 阅读(1875) 评论(1) 推荐(1) 编辑
摘要:除了极小的微型 demo 级别项目外,其余项目建议用 pri 分门别类不同文件夹存放代码文件,方便统一管理和查找。同类型功能的类建议统一放在一起,如果该目录下代码文件数量过多,也建议拆分多个目录存放,比如系统配置的窗体放在一个目录下,日志管理的窗体放在一个目录下。 很多通用功能,多个项目都会用到,可 阅读全文
posted @ 2023-02-07 11:54 fengMisaka 阅读(1246) 评论(1) 推荐(3) 编辑
摘要:这里讲解一些全局类,一般都放在 Util 这个文件夹内。Util 是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理。 一、全局配置文件 全局配置文件管理类 AppConfig 用来读写对应项目的配置文件。格式可以是 ini、xml、json 等,小项目建议 ini,怎么方便怎么来,相 阅读全文
posted @ 2023-02-07 11:54 fengMisaka 阅读(758) 评论(0) 推荐(0) 编辑
摘要:绘图设备是指继承 QPaintDevice 的子类,你可以使用 QPainter 直接在其上面绘制图形,Qt 一共提供了四个这样继承 QPaintDevice 的绘图设备类,分别是:QPixmap、QBitmap、QImage和 QPicture。其中: QPixmap专门为图像在屏幕上的显示做了优 阅读全文
posted @ 2022-08-15 11:45 fengMisaka 阅读(4280) 评论(0) 推荐(3) 编辑
摘要:一、双缓冲机制 所谓双缓冲机制,是指在绘制控件时,首先将要绘制的内容绘制在一个图片中,再将图片一次性地绘制到控件上。 在早期的Qt版本中,若直接在控件上进行绘制工作,则在控件重绘时会产生闪烁的现象,控件重绘频繁时,闪烁尤为明显。双缓冲机制可以有效地消除这种闪烁现象。自 Qt 5 版本之后,QWidg 阅读全文
posted @ 2022-08-15 11:45 fengMisaka 阅读(2752) 评论(0) 推荐(1) 编辑
摘要:一、Qt 插件机制 1.1 Qt 插件简介 插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。插件与宿主程序之间通过接口联系,就像硬件插卡一样,可以被随时删除,插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护。Qt 提供了两种API用于创建插 阅读全文
posted @ 2022-08-09 17:44 fengMisaka 阅读(6962) 评论(0) 推荐(1) 编辑
摘要:简介 Qt Linguist 提供了一套加速应用程序翻译和国际化的工具。Qt 使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统。 使用 QTranslator 来加载生成的 qm 文件,就可以让程序显示指定的语言。 // 国际化翻译 QString language = "CH 阅读全文
posted @ 2022-08-09 09:44 fengMisaka 阅读(955) 评论(1) 推荐(2) 编辑
摘要:一、前言 Qt 使用 QNetworkAccessManager 访问网络,这里对其进行了简单的封装,访问网络的代码可以简化为: // [[1]] GET 请求无参数 HttpClient("http://localhost:8080/device").success([](const QStrin 阅读全文
posted @ 2021-04-30 17:13 fengMisaka 阅读(6947) 评论(3) 推荐(1) 编辑
摘要:一、前言 Qt 中访问网络使用 QNetworkAccessManager,它的 API 是异步的,这样在访问网络的时候不需要启动一个线程,在线程里执行请求的代码。(但这一点在有时候需要阻塞时就是个麻烦了) 需要注意一点的是,请求响应的对象 QNetworkReply 需要我们自己手动的删除,一般都 阅读全文
posted @ 2021-04-30 15:46 fengMisaka 阅读(1618) 评论(0) 推荐(0) 编辑
摘要:一、前言 C++ 中比较不错的日志工具有 log4cxx,log4qt 等,但是它们都不能和 qDebug(), qInfo() 等有机的结合在一起,所以在 Qt 中使用总觉得不够舒服,感谢 Qt 提供了 qInstallMessageHandler() 这个函数,使用这个函数可以安装自定义的日志输 阅读全文
posted @ 2021-04-29 08:28 fengMisaka 阅读(4275) 评论(0) 推荐(3) 编辑
摘要:概述 Qt 开发 MQTT 程序有两种方式,一个是 Qt 官方提供的基于 MQTT 的封装,一个是第三方(EMQ)开发的用于 Qt 调用 MQTT 的接口,二者使用方法大同小异,并且均提供了源码。那么,这里先来介绍第一种,如基于 Qt 官方提供的封装来使用 MQTT。 Qt 官方虽然在 2017 年 阅读全文
posted @ 2020-10-09 14:21 fengMisaka 阅读(4588) 评论(0) 推荐(1) 编辑
摘要:Qt 5.x 相对于 4.8 及以前版本在窗口系统上有较大幅度改动,原来的 QWS 被 QPA 完全取代,导致输入设备配置简化了很多,执行界面程序也不需要再加上-qws。 找到触摸屏event 用的 USB 接口驱动触摸屏,当你插入 usb 的电容屏时,在 dev/input 下面会出现相应的设备节 阅读全文
posted @ 2020-06-16 14:52 fengMisaka 阅读(4015) 评论(0) 推荐(0) 编辑
摘要:所有Qt版本下载地址: http://download.qt.io/archive/qt/ 所有Qt Creator下载地址: http://download.qt.io/archive/qtcreator/ 所有Qt VS开发插件下载地址: http://download.qt.io/archiv 阅读全文
posted @ 2019-12-13 23:35 fengMisaka 阅读(3290) 评论(0) 推荐(1) 编辑
摘要:项目中通常需要采用各种数据库(如 Qracle、SQL Server、MySQL等)来实现对数据的存储、查询等功能。下面讲解如何在 Qt 中操作 SQlite 数据库。 一、SQLite 介绍 Sqlite 数据库作为 Qt 项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之 阅读全文
posted @ 2019-08-16 15:13 fengMisaka 阅读(15248) 评论(0) 推荐(8) 编辑
摘要:为了让程序尽快响应用户操作,在开发应用程序时经常会使用到线程。对于耗时操作如果不使用线程,UI界面将会长时间处于停滞状态,这种情况是用户非常不愿意看到的,我们可以用线程来解决这个问题。 大多数情况下,多线程耗时操作会与UI进行交互,比如:显示进度、加载等待。。。让用户明确知道目前的状态,并对结果有一 阅读全文
posted @ 2019-06-24 16:54 fengMisaka 阅读(2009) 评论(0) 推荐(0) 编辑
摘要:一、同步线程方法 使用线程的目的是允许代码并行运行,但是有时线程必须停止并等待其他线程。例如,如果两个线程试图同时写入相同的变量,结果是不确定的,所以需要同步线程。同步线程是一种保护共享资源等数据的常见的技术。迫使线程等待另一个的原则被称为互斥 。 Qt 中的 QMutex、QReadWriteLo 阅读全文
posted @ 2019-06-24 16:09 fengMisaka 阅读(2247) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示