- 博客(85)
- 资源 (16)
- 收藏
- 关注
原创 Qml 实现星级评分组件
在现代应用程序中,星级评分是一个常见的用户界面元素,它允许用户对产品、服务或内容进行评价。想必大家在用各种带有评分的软件中看到过这个组件:本文将指导你如何使用Qml创建一个简单而美观的星级评分组件,并且支持高度自定义。
2024-09-10 18:01:13 766
原创 Qml 实现水波进度动画条
水波效果最重点的就是水波,其实这个水波就是个障眼法罢了,画张图你们就明白了。其实它就是一个圆角正方形,一直在旋转和上升下降,让用户有一种水波的视觉感~当然,我们还需要将多余的部分裁剪掉,因此这里需要借助。至于进度条和文字就非常简单,直接看源码即可。学习了一下实现思路,觉得很有意思。,有一些小技巧,分享给大家~
2024-09-10 18:01:06 804
原创 Qml 中如何实现私有属性?
在一般编程中,实现私有属性是一种常见的封装实践,它有几个重要目的和好处。 然而,在 QML 中,由于它是一种面向组件编程,并不能像传统的面向对象编程语言那样直接支持私有属性。因此,本篇通过使用一些特殊技巧,也能在 Qml 中实现私有属性。
2024-08-22 23:40:56 341
原创 Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
在前端中这一般称为 Notification 或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。这种组件一般具有以下特点:1、全局/局部显示:它不依赖于具体的页面元素,可以在整个页面的任意位置显示。2、自动消失:默认情况下,消息会在一定时间后自动消失,也可以设置为不自动消失。3、多种类型:支持多种类型的消息,如成功(Success)、警告(Warning)、错误(Error)和 消息(Message)等。4、可配置:可以自定义消息的显示位置、持续时间、内容等。然鹅 Qml 中并未
2024-08-22 18:04:05 1089
原创 Qt 中实现异步散列器
虽然QCryptographicHash 很优秀,但它最大的问题在于其散列值的计算是同步的( 即阻塞),对小数据来说并没什么影响,但对大数据来说则意味明显卡顿。因此,我将QCryptographicHash 进行简单封装,扩展了实用性的同时并将计算改为异步,还增加了进度通知和结束通知。
2024-08-12 18:42:38 1174
原创 Qt 哈希加密之 QCryptographicHash
哈希函数是一种单向函数,它可以接收一个输入(或称为消息),然后返回一个固定大小的输出,这个输出就是哈希值。确定性:相同的输入总是产生相同的输出。快速计算:计算哈希值的速度非常快。抗篡改性:即使输入数据发生微小的变化,输出的哈希值也会发生显著变化。雪崩效应:输入的微小变化会导致输出的显著变化。难以逆向:从哈希值几乎不可能逆推出原始输入。
2024-08-12 18:41:26 633
原创 如何利用AI提高内容生产效率?
AI可以通过自然语言处理(NLP)技术来生成文章和博客。这些系统可以分析大量的文本数据,学习特定的写作风格和结构,然后自动生成内容。例如,一些新闻机构已经使用AI来撰写财经报告和体育赛事的摘要。
2024-05-18 21:16:46 685 1
原创 Qml 实现瀑布流布局
最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现。结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解,简单实现了一个 Qml 版的瀑布流布局。瀑布流布局(Waterfall Layout),也被称为瀑布式布局或多栏自适应布局,是一种网页布局技术,它允许内容以多列的形式显示,类似于瀑布一样从上到下流动。这种布局方式特别适合于展示图片或卡片式内容,如图片库、新闻摘要、商品列表等。
2024-05-18 20:55:15 1214
原创 2023年图灵奖揭晓,你怎么看?
他的工作推动了交互证明系统的发展,并为理解计算问题的复杂性提供了新的工具和方法。他的工作揭示了随机性在解决复杂计算问题时的重要性,并为设计高效的算法提供了重要的启示。他的研究探索了伪随机性的性质、生成方法以及在计算中的应用,为利用伪随机性解决计算问题提供了新的思路和方法。综上所述,Avi Wigderson 的学术生涯和领导力对理论计算机科学领域产生了长远影响,他的贡献为学科的发展提供了重要的理论基础和方法,同时推动了学术社区的壮大和发展。他的领导力推动了学术社区的发展和壮大,促进了学术交流和合作。
2024-04-16 18:37:33 678
原创 提升性能:QML Canvas 绘图优化技巧
优化QML Canvas绘图性能是确保应用程序流畅运行的关键一环。通过采用上述技巧和策略,你可以提升绘图性能,改善用户体验,并确保应用程序在各种设备上都能够高效运行。只有不断地优化和调整绘图代码,结合性能分析工具的使用,才能使你的应用在绘图方面达到最佳状态。
2024-04-16 18:19:27 1201
原创 Qt 6.5 中 QML 模块的新功能
尽管QML模块已经存在很长时间了,它们的使用在 Qt6 之前相当稀少。在 Qt6 中,它们变得更加普遍。并且有充分的理由:只有将所有相关的 QML 放在一个模块中,才能使qmllint或Qt Quick 编译器等工具正常工作。但是,到目前为止,Qt 自己的 API 的某些部分还不知道 module。与 QML 类型相互作用时,例如通过,您需要使用明确的文件路径。从 Qt 6.5 开始,现在有一个替代解决方案来利用模块,我们将在此博客文章中介绍。
2024-04-14 23:55:53 1365
原创 Qml 中的那些坑(六)---对象被错误删除,看不见的垃圾回收
在 Qml 中,很多时候我们需要动态创建一些 Qml 对象,通常是:createComponent + createObject 或createQmlObject。然而,最近工作中却出现了一个相当难以察觉的问题,花了很多时间才定位到关键位置。其根本原因在于:未给动态创建的对象分配 parent ( 即:没有任何对象持有其引用 ),结果就是,当 Qml 引擎运行垃圾回收时,这些对象会被错误清除掉。
2024-04-14 16:28:43 523
原创 聊聊主流开源协议
开源协议确保开发者能够保留对其原创作品的某些基本权利。例如,它们可以帮助开发者保留版权,确保他们的作品得到适当的认可,并防止他人未经许可地使用、修改或分发软件。这为开发者提供了一定程度的控制权和安全感,鼓励他们分享自己的工作成果。开源协议不仅保护开发者,也为使用者提供了明确的权利和义务。使用者可以根据协议的规定自由地使用、复制、修改和分发软件,但同时也需要遵守协议中的条款。这种透明度有助于减少法律纠纷,确保使用者在合法的范围内使用软件。
2024-04-11 21:25:44 1204
原创 QT6 中的隐式导入与 QML 模块解析
在 QML6 开发中,每个 QML 文档都默认具有隐式导入。这意味着我们可以在同一目录下使用其他 QML 文档,而无需显式导入。这大大减少了编写冗余代码的工作量。通常,我们不需要为QML文件所属的模块进行导入。然而,如果隐式导入不能识别文件所属的模块,这一功能的价值就会大打折扣。虽然理论上这种情况不应该发生,但由于 Cmake API 的限制,我们不能完全排除这种可能性。
2024-04-10 23:43:05 514
原创 AI技术创业有哪些机会?
随着技术的进步和市场的发展,未来还会有更多新的创业机会出现。对于创业者来说,关键是要紧跟技术趋势,了解市场需求,找到自己的定位和优势,提供有竞争力的产品和服务。同时,创业者还需要具备持续学习和创新的能力,以应对快速变化的市场环境。
2024-04-10 18:35:50 646
原创 Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)
之前应公司需要,给公司写过一整套直播的库( 推拉流,编解码),类似于 libobs。结果后来因为没有相关项目,便停止开发&维护了。不过里面很多有用的组件,然后也挺好用的,遂开源出来一部分。因此,本篇就简单讲一下用法。
2024-04-01 19:56:05 1653
原创 全球首位AI程序员诞生,将会对程序员的影响有多大?
近期,全球首位AI程序员Devin的出场,不禁让我想到了一个有趣的问题:AI程序员会不会抢程序员的饭碗呢?先别着急下结论!虽然AI技术在编程领域越来越广泛,但它真的能完全替代我们程序员吗?AI程序员的优势分析AI 程序员 Devin 的出现标志着编程自动化和智能化迈上了新的台阶。相较于传统的人工程序员,AI 程序员 Devin 具有显著的优势:提高开发效率:AI程序员可以进行24/7不间断工作,无需休息,大大缩短了开发周期。
2024-04-01 15:46:03 302
原创 程序员35岁会失业吗?
程序员在35岁时是否会失业,并不是一个确定性事件,而是由多种因素共同决定的。这个话题反映了IT行业技术更新速度快、竞争激烈的特点,但同时也揭示了经验和技能积累的重要性。首先,技术更新与个人适应性方面,虽然IT行业技术进步迅速,但如果程序员能保持持续学习的习惯,积极跟进行业发展趋势,不断提升和完善自身的技术栈,就不会因年龄增长而丧失竞争力。事实上,经验丰富的程序员在项目管理、系统架构、复杂问题解决等方面具备独特优势,他们的价值并不会因为年龄而减少。
2024-03-30 18:12:43 1234
原创 Qt 实现 Asterix 报文解析库
最近工作中需要解析 Cat 21 和 Cat 62 的 ADS-B 数据 ( 自己的工作包含航空领域 )。然后,因为整个 Asterix 协议类别非常之多,每个类别的版本也多,纯手工实现每个版本解析根本不现实 ( 然鹅公司之前的解析库就是这么做的且做的太烂 )。于是花了很多时间去寻找一个好用的解析库,比如 Wireshark 的 Asterix 解析部分 ( 可惜因为是插件,有点难移出来 )。最后找了很久( Asterix 好像应用比较局限,资料实在太少
2024-03-16 17:22:49 1680
原创 Qt / Qml 视频硬解码(CUDA)中如何实现无上传硬渲染(一)
很多时候,我们在对视频的解码和渲染的处理都要经过以下步骤: ◦ 软解码,视频帧位于内存。 ▪ 软渲染,需要拷贝到图像然后渲染;硬渲染则需要上传纹理,然后渲染。 ◦ 硬解码,视频帧位于显存。 ▪ 软渲染,需要下载到内存,然后拷贝到图像再渲染;硬渲染则直接拷贝到纹理,然后渲染。 然而,对于超高分辨率( 4K 8K )而言,上传下载带来的的性能损失太大了( CPU瓶颈 ),为了实现更流畅的体验和更低的资源占用,应当考虑更好的方案。
2023-01-09 16:13:07 2675 1
原创 Qt6 中如何使用 qsb
Qt 6 以后,对于 Qt Quick 不再直接使用各个图形 API 的着色器语言,而是使用一种 .qsb 的文件,这个文件由 qsb.exe 工具生成,它包含了各个图形 API 使用的字节码。通过使用 qsb,我们便可以自由切换硬件渲染后端而无需写多个平台的着色器代码。另一方面,.qsb 文件主要由 Qt Scene Graph 和 Qt3D 使用,当然,Qml 中相关的组件也同样使用,例如:ShaderEffect。因此,本篇使用前一篇的圣诞树作
2023-01-03 08:00:00 2929 2
原创 Qml 中用 Shader 实现圣诞树旋转灯
2022年圣诞节到来啦,很高兴这次我们又能一起度过~这次给大家带来一个简单漂亮圣诞树灯。当然了,本篇文章主要是讲解一下如何在 Qml 中使用GLSL来实现自己的特效。至于代码嘛,我比较喜欢在Shaderjoy上寻找,那里有很多超级炫酷的着色器实现的特效,并且可以很轻松的集成到 Qml 中。
2022-12-24 19:17:52 3092
原创 Qt / Qml 中捕获(中文)输入法事件(按下 & 提交)
最近工作中遇到一个奇怪的问题:本来想在TextEdit(QTextEdit) 中捕获一下键盘按键按下的事件。然而,当输入法为英文时( 正常输入字符 ),可以捕获到按键事件,但当我切换到中文时,弹出输入法选框后,却无法再像英文那样捕获到事件。
2022-12-14 12:43:38 3319 1
原创 Qt / Qt Quick程序打包的一些坑 (三)
最近想把项目升级到 Qt6,因为代码的改动不算很大,所有想着打包也应该差不多。结果因为我使用了 Qt Charts,怎么也运行不起来,后来通过动态库依赖才发现 Qt6 新增加了一个 Qt6OpenGLWidgets.dll,并且打包时并不会自动复制,只能手动拷过来了。
2022-11-29 12:56:43 1550
原创 Qml中的那些坑(五)---MouseArea上的ListView滚轮事件穿透
最近在 Qml 中使用 MouseArea 时发现了一个奇怪的现象:位于 MouseArea 上的 ListView 在处理了滚轮事件的情况下进行滚轮,下面的 MouseArea 却在某些情况下接收到了这个事件。按照直觉,ListView 明明有内部的滚轮事件处理,应该阻止事件向下传递才对,然而此时的情况却出乎意料,因此在此记录并附上解决方案。
2022-11-28 09:00:00 1782 2
原创 Qt 中捕获三方库&自身标准打印方法
很多时候,我们为了方便调试,常常需要加入一些打印。例如 Qt 中的 QDebug,C 和 C++ 中的 printf / cout 等等,又或者是三方库提供的标准打印接口。然而大部分时候,这些打印相当不统一(格式和位置),并且因为 Qt 作为 GUI 框架,调试信息实在不应该直接置于 UI 之上。因此,需要一种能统一和标准化所有标准打印的方法( 所谓标准打印即标准输出 stdout),并且能够动态配置。
2022-11-22 09:00:00 2193
原创 纯 Qml 实现仿画图3D的颜色选择器(更强更易用)
在做编辑相关的应用经常会用到颜色选择器。实际上, Qt Widgets 时代使用 QColorDialog 或者 Qml 中 ColorDialog即可完成一般的颜色选择的需求。 然鹅现在都 Windows 11了!!还在用那么拉跨的东西,实在是看不下去了。 然后自己一直很喜欢用 Windows 画图3D的那个颜色选择器,因此我决定仿照实现一个,并且还为它增加了一个透明度。
2022-11-16 10:00:00 2246 4
原创 Qt6 中使用 Core5Compat 和 Qt5Compat
最近用 Qt6 有一段时间了,其实对于 Qml 来说,语法上的变动不是很大。 不过在一些组件的使用中发现很多效果和以前不太一样。 另一方面,Qt5 (Qml) 中一些比较常用的也消失了,并且没有直接替代,需要注意。 其中,影响最大的是 移除了 QtQuick.Controls 1.x 和 QtGraphicalEffects 移动到 Qt5Compat 模块中。 而对于 Qt C++ 部分,影响最大的则是 QTextCodec ,并且没有直接替代...
2022-07-10 14:57:00 5340 3
原创 Qml 计算实际帧率(FPS)的方法
在 Qml 中,任何可视化的项的显示 ( 渲染 ) 都依赖一个根 QQuickWindow,它们包含了底层的场景图渲染器。 因此,如果我们想要在 Qml 中获取 FPS,则只需在窗口渲染场景图时记录帧数并计算帧率即可。 不过,需要注意的是:GUI 程序一般不会频繁刷新,并不建议使用循环 update() 来计算 ( 可行但并非最佳 )。 .........
2022-07-05 00:01:37 1744
原创 QWidgets 与 Qml 相互嵌入方法,以及其中的一些坑
【写在前面】有时候,当我们接手一个老项目( 也可能不老-.-)时,会碰上这些情况:1、老项目实用 QWidgets,想要部分或全部迁移到 Qml。2、老项目实用 Qml,想要部分或全部迁移到 QWidgets。然而,很多时候全部迁移几乎不现实,此时,折中的方案应运而生:QWdigets 和 Qml 相互嵌套使用。本篇主要内容:1、Qml 嵌入 QWiidgets中的方法及一些坑;2、QWiidgets嵌入Qml中的方法及一些坑;【正文开始】Qml 嵌入...
2021-05-30 19:41:29 9951 15
原创 Qml 中的那些坑(四)---MouseArea 的 Click / Hover 事件穿透
【写在前面】我们在 Qml 中经常会遇到这样的情况:有某个 Item ( 这里称为 Parent ),需要它在鼠标 Enter 时显示,鼠标 Exit 时隐藏。这时候我们会用一个 MouseArea,然后处理 onEntered / onExited。但是,有一个巨大的坑:如果这个 Item 里嵌入了其他Item ( 这里称为 Child )并且处理自己的 MouseArea,则会导致 Parent Item 的 MouseArea 失效( 即不能接收到相应的事件 )。本篇主要内..
2021-04-16 23:30:49 7649 5
原创 Qml 中实现对原始视频图像格式( YUV / RGB )支持
【写在前面】之前一直在学着视频相关的知识,然后工作也正好是监控相关的。并且界面部分用Qml 开发的。一开始,我觉得相当容易,只是显示解码好的图像而已,没什么难度。因为之前写过一篇在 Qml 中实现:https://blog.csdn.net/u011283226/article/details/104051033?spm=1001.2014.3001.5501这个方法优点是简单,但是缺点是只支持 QImage/QPixmap/QQuickTextureFactory。...
2021-04-11 17:11:07 3601 5
原创 Qt 中实现任意阶贝塞尔曲线绘制 & 动态调节
【写在前面】Qt 中有相当方便的绘制接口 ( 由 QPainter 提供 ) 。例如贝塞尔曲线的 API:QPainterPath 的 quadTo() 和 cubicTo() 然后使用 QPainter::drawPath()。然而,美中不足的是,Qt 的贝塞尔曲线只支持二次和三次,对于更高阶的似乎就无能为力了。即便多个 quadTo() 或 cubicTo() 连用的效果也非常不理想。因此,我想到利用贝塞尔的公式生成曲线点,然后用直线来连接,即可实现「 N阶贝塞尔曲线绘制 」。
2021-04-04 18:10:55 6107 5
原创 ScrollBar(滚动条)的实现尝试
【写在前面】 【正文开始】首先,我们思考一下,滚动条负责什么工作:在一个页面中,当某个元素不足以显示内容时,可以滚动的,用于显示剩下内容的条。因此,对于一个滚动条,我认为它应该有这些属性: target: any:目标 ( 目标元素,用于滚动其内容 )。 targetWidth & targetHeight: number:目标元素宽高 ( 用于计算滑块宽度以及和后续滚动时的位置计算)。 pressed: bool:是否被按下 ( 用...
2021-01-30 22:25:49 2557
原创 轮播图的多种实现及原理
【写在前面】最近,在自己的项目中遇到了很多轮播图。这里的很多,并非数量多,指的是种类很多,即多种实现。本篇主要内容:1、轮播图的多种实现。2、效果对比和更好的建议。【正文开始】 方法一: 相当常见简单的实现方法:1、将所有的图片并排。2、依次平移即可。HMTL 和 CSS部分:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">
2020-12-28 22:52:55 40336 20
原创 深入理解#define预处理,预处理器运算符# ## #@
【写在前面】C/C++ 中使用 #define 的地方似乎越来越少。最开始刚接触的时候,常常被告诉,#define 只是普通的文本替换,一般用来定义一些常量。后来又学习到,使用 const 代替 #define 来定义真正的常量。随着经验的积累,#define 现在更多的用来做一些代码的预处理工作和小函数定义。然而,宏远没有想象的那么简单。本篇主要内容:1、预处理操作符中的 # ## #@ \。2、预处理器展开规则。3、递归使用宏。【缘起】工作里一个偶然的机会,.
2020-11-01 22:00:32 1021
原创 CSS实现流动边框
【写在前面】咳咳,首先讲个题外话,原本我是做 C++/Qt 的,然而因为工作 ( 部分原因) 学起了前端。当然,这也并不意味着我会丢掉 C++/Qt/Qml 这些 ( 会接着更新 ),只是额外增加一些前端相关的文章而已。再者,也想着自己搭个网站 ( 或是博客 ),所以学学前端也是必然的。【正文开始】目前学到了 CSS动画这部分,按照我的习惯,肯定是要实现些好玩的东西。回想起王者里面很炫酷的头像框,大概这样:当然,王者这种用的是粒子特效,而我们只需仿一个效果即可。那么,..
2020-10-11 14:13:15 8625 2
原创 QTextStream格式化文本:位级表示 / 字节表示 / 内存地址
【写在前面】最近在看《深入理解计算机系统 第二版》简称 CSAPP,这本书我是极力推荐的,深度和广度都有 ( 而且讲解得非常仔细 )。然后自己是第二遍看了 ( 之前看的第一版,第二版有不少新东西),里面的题也是一直跟着做的,就顺手写了几个小函数来方便做题。因为书里的一些题目很多时候需要查看变量的【位级表示 / 字节表示 / 内存地址】,然而对简单打印出来的格式很不满意,所以想着 Qt 中比较好用的 QTextStream 来进行格式化输出 ( QDebug 也可以,但还不够方便)。所以这..
2020-07-26 14:23:51 1457
Qml 实现星级评分组件
2024-09-10
Qml 实现水波进度动画条
2024-09-09
Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
2024-08-22
基于 QCryptographicHash 封装的异步散列器
2024-08-12
Python爬虫开发实战教程PDF完整全套教学课件
2024-04-08
Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)
2024-04-01
Qt 实现 Asterix 报文解析库
2024-03-16
Qml 中用 Shader 实现圣诞树旋转灯
2022-12-24
Qt / Qml 中捕获(中文)输入法事件(按下 & 提交)
2022-12-14
Qt 中捕获三方库&自身标准打印方法
2022-11-20
纯 Qml 实现仿画图3D的颜色选择器(更强更易用)
2022-11-13
Qml 计算实际帧率(FPS)的方法
2022-07-05
MouseArea 的 Click / Hover 事件穿透
2021-04-16
Qml中实现对原始视频图像格式(YUV / RGB)支持
2021-04-11
Qt 中实现任意阶贝塞尔曲线绘制 & 动态调节
2021-04-04
Qml实现简易版Qt Linguist(语言家)
2020-06-30
Qt / Qml 实现历史编辑器 ( 支持历史搜索 & 关键字匹配 )
2020-03-19
Qml中实现多视图,多图像源(QImage / QPixmap)
2020-01-30
QML中动态创建组件(同步/异步)的方法
2019-08-11
Qt制作的远程控制(屏幕控制)
2019-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人