
Qt/QML
文章平均质量分 79
Fighting Horse
专注移动端、桌面端跨平台程序架构;深入网络、音视频、3D渲染等技术应用。
展开
-
一个 Qml MenuBar 的问题
使用 QQuick.Control 中的 MenuBar 实现主菜单栏。菜单栏包括 File、Edit、View、Help 菜单项。点击菜单项,会弹出对应的菜单。流程1:点击菜单栏上的菜单项,该菜单项被激活(弹出),再次点击该菜单项,菜单项退出激活状态。流程2:如果在激活状态,移动鼠标到另一个菜单项,自动激活(不需要点击)另一个菜单项,当前激活的菜单项退出激活状态。以上都符合预期,但是问题来了。原创 2023-01-05 10:41:35 · 894 阅读 · 2 评论 -
实现 QQuickImageProvider 的若干问题的思路
使用 image:// 开头的 url,实际上调用了自定义的 ImageProvider。原创 2022-09-01 19:18:05 · 658 阅读 · 0 评论 -
在 Qt 中实现变色的图标(tintColor)
很多时候,设计要求当按钮的状态变化时(比如 hover、按下,禁用),按钮的背景、文字、图标能够改变颜色,以反馈按钮的当前状态。如下图:改变文字、背景的颜色很容易,但是改变图标颜色就比较麻烦了。早期的方案,是提供一整套不同颜色图片,分别设置给不同的状态。所有一旦要新加或者改变一个图标,都要设计提供一组图片文件,开发一个个的加到代码项目中,再添加一组设置图片的代码,是特别的麻烦。后来,一些平台提供了相关的解决方案,就是 tintColor。............原创 2022-08-31 19:16:11 · 2665 阅读 · 0 评论 -
Qt 中大尺寸图片的处理
我们的程序(用 Qt 实现),因为一个用户图标,在发到用户的产品中崩溃了。起因是这样的,我们允许用户注册上传自己的头像。然后中售卖的设备屏幕界面上,也会展示用户自己的头像。有一个用户上传了一个超大的头像图片,6144 x 6144 像素,jpg 的图片有 1.8M。然后他的设备的UI界面就经常卡死、崩溃。计算一下,假如图片每个像素 rgb 3 字节,那么 6144 * 6144 * 3 为 108M,对于 1个嵌入式平台,108 M已经很大了,申请这么大的内存很容易失败,那么程序崩溃就不足为奇了。.....原创 2022-08-28 10:27:30 · 4407 阅读 · 1 评论 -
Qt/Qml 中对象生命期的陷阱
在 Qml 中访问 Qt 的对象(包括属性、方法、信号)非常的方便,但是即使是经验老道的 Qt 程序员,也容易被这其中的机制坑到。然后 Qml 程序就像一个定时炸弹一样,不知道怎么就冒出一个 Crash,而且 crash 栈还在 libQml 库中,无法定位问题。先看几个例子吧。。。例1:用 slot 返回 QObjectclass MyItemModel : public QObject{ Q_OBJECTpublic slots: QVariant itemAt(int原创 2022-05-24 16:56:24 · 907 阅读 · 1 评论 -
Qt/Qml 实现字符串动态计算
当我们要显示包含变量的文字时,在 Qml 里面怎么实现?下面我们就提供一种方法。功能需求比如我们要将下面的字符串显示在界面上,QString text = "Moving ${object} from ${start.x}-${start.yx} to ${end.x}-${end.yx}"...原创 2022-05-21 17:32:20 · 952 阅读 · 0 评论 -
Qt Json 库的效率优化
使用 Qt Json 库,可以比较方便的实现基于 json 格式的接口通信。然而在通信消息比较频繁的情况下,容易成为效率瓶颈。本文就如何更有效率的使用 Qt Json 库,以及背后的一些相关实现细节做一些讨论。使用 QtJson 一个例子QByteArray data;QJsonDocument doc = QJsonDocument::fromJson(data);auto json = doc.object();for (auto elem : json["items"].toArray原创 2022-05-14 21:46:43 · 1475 阅读 · 0 评论 -
嵌入式 Qt/Qml 屏幕旋转(横屏,竖屏)问题的解决
嵌入式 Linux 的一个小屏幕,正常是竖屏模式,可是我们产品中需要横着使用。 Qml 代码已经写好了,在 PC 正常工作。然后移植到嵌入式 Linux,问题来了,屏幕方向不对,显示不正常。 那就去网上找方法吧。不可行方案方案一:export QT_QPA_EGLFS_ROTATION=90没有任何效果。方案二:export QT_QPA_ROTATION=linuxfb:rotation=90...原创 2021-11-25 20:36:32 · 7130 阅读 · 10 评论 -
Qt/QML 实现图片圆角剪切效果
在很多 UI 设计中,需要将图片按照一定的形式整理。比如下面的 VIP 图片就是用一个圆形剪切原始图片,形成的效果。其实它的原始图片是这样的:要在 QML 中实现这样的效果,可以使用 OpacityMask(QtGraphicalEffects 1.0)。但是我们知道 QtGraphicalEffects 依赖硬件支持,在某些(比如嵌入式)平台,并没有实现,也就是说,这样的方案存在兼容性问题。 下面我们就.........原创 2022-02-05 15:34:45 · 2758 阅读 · 1 评论