摘要: Qt 中实现异步散列器 在很多工作中,我们需要计算数据或者文件的散列值,例如登录或下载文件。 而在 Qt 中,负责这项工作的类为 `QCryptographicHash`。 虽然 `QCryptographicHash `很优秀,但它最大的问题在于其散列值的计算是同步的( 即阻塞 ),对小数据来说并没什么影响,但对大数据来说则意味明显卡顿。 因此,我将 `QCryptographicHash` 进行简单封装,扩展了实用性的同时并将计算改为异步,还增加了进度通知和结束通知。 阅读全文
posted @ 2024-09-11 10:12 梦起丶 阅读(158) 评论(0) 推荐(2) 编辑
摘要: Qml 实现瀑布流布局 最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现。 结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解,简单实现了一个 Qml 版的瀑布流布局。 阅读全文
posted @ 2024-09-10 18:49 梦起丶 阅读(196) 评论(0) 推荐(1) 编辑
摘要: Qml 中的那些坑(五)---MouseArea 上的 ListView 滚轮事件穿透 最近在 Qml 中使用 `MouseArea` 时发现了一个奇怪的现象: 位于 `MouseArea` 上的 `ListView` 在处理了滚轮事件的情况下进行滚轮,下面的 `MouseArea` 却在某些情况下接收到了这个事件。 按照直觉,`ListView` 明明有内部的滚轮事件处理,应该阻止事件向下传递才对,然而此时的情况却出乎意料,因此在此记录并附上解决方案。 阅读全文
posted @ 2024-04-22 18:15 梦起丶 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Qml 中的那些坑(四)---MouseArea 的 Click / Hover 事件穿透 我们在 Qml 中经常会遇到这样的情况: 有某个 Item ( 这里称为 Parent ),需要它在鼠标 `Enter` 时显示,鼠标 `Exit` 时隐藏。 这时候我们会用一个 MouseArea,然后处理 `onEntered / onExited`。 但是,有一个巨大的坑: 如果这个 Item 里嵌入了其他 Item ( 这里称为 `Child` ) 并且处理自己的 MouseArea,则会导致 `Parent Item` 的 MouseArea 失效 ( 即不能接收到相应的事件 )。 阅读全文
posted @ 2024-04-20 22:42 梦起丶 阅读(53) 评论(0) 推荐(0) 编辑
摘要: Qml 中的那些坑(三)---KeyEvent 的 key / virtualKey / scanCode 在 Qt 中,对于一个键盘事件QKeyEvent ,通常包含三种键值: key:Qt 键值,例如 Qt::Key_Escape。 nativeVirtualKey:本机虚拟键值,例如 VK_ESCAPE ( windows )。 nativeScanCode:本机扫描码。 阅读全文
posted @ 2024-04-19 11:12 梦起丶 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Qml 中的那些坑(二)---QWindow 的 closeEvent 在很多应用中,很可能会需要这样的功能: 我们点击窗口上的 × (关闭),并不是要真的退出应用,而是要它们以小托盘的形式继续运行。 情况 1:如果 × 是自定义的按钮,我们可以轻易控制它的行为,hide -> system tray。 情况 2:如果 × 是窗口自带的按钮,那么对于 QWidgets 来说,我们只需要重写其 closeEvent方法,然后实现想要的动作。然鹅,对于 Qml 的 Window ( 即 QQuickWindow ),会发现一些问题。 阅读全文
posted @ 2024-04-18 20:36 梦起丶 阅读(11) 评论(0) 推荐(0) 编辑
摘要: Qml 中的那些坑(一)---Image 的内存 在QML中,Image是一个常用的控件,用于在界面中显示图片。然而,当程序中大量使用Image控件时,我发现内存占用异常高。通过实验,每增加一张大尺寸图片,内存占用就会显著增加。 为了解决这个问题,我在Qt的文档中找到了解决方案:使用sourceSize属性。这个属性可以限制加载到内存中图像的实际大小,从而减少内存占用。我通过设置sourceSize为窗口的尺寸,成功将内存占用从80MB降低到了20MB。 阅读全文
posted @ 2024-04-17 23:45 梦起丶 阅读(49) 评论(0) 推荐(0) 编辑