![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小生聊【Qml】
文章平均质量分 78
iriczhao
软件工程师一枚。读书时搞过Web开发,对html + css + JavaScript开发栈有一定了解。毕业后,成了一名软件工程师,主要研究和学习MCU端软件的开发、嵌入式Linux内核、嵌入式Linux应用软件的开发。做过可穿戴设备、物联网设备、医疗控制设备的软件开发;对人工智能、物联网、智能家居、5G技术等领域同样有着浓厚兴趣。
茫茫人海中,您无意识的一眼凝眸皆是缘分,如果您有想说的话,欢迎与我交流(iriczhao@163.com);如果您发现了分享的文章出现了错误,请您多拍砖,小生将自觉改正。
展开
-
【QML】QML中的ui文件
还有另外一款工具:Qt Design Studio,该工具是Qt官方推出为适应Qt Quick发展趋势的独立工具,一般情况下,在Qt Design Studio工具下创建设计的工程是可以直接放到Qt Creator中使用。Qt Design Studio中,在『Projects』视图下选中需要添加文件的工程,右键单击,在弹出的上下文菜单中,选择“Add New…我们可以使用Qt Design Studio的向导创建后缀名为.ui.qml的UI文件,UI文件可以在2D视图中编辑。支持的『Qt QML 方法』原创 2022-09-20 20:28:09 · 1463 阅读 · 0 评论 -
【QML】 如何将Qt Design Studio 创建的UI项目转换为应用程序
在实际使用中,可能会存在多个人协同开发或者C++与QML混合开发的使用场景,这时候可能会使用到不同的软件,多数情况下是Qt Creator和Qt Design Studio两款软件协同一起使用。(毕竟很多时候做出一个漂亮的软件外观比实现软件的功能要繁杂一些)从Qt Design Studio 2.3.0开始,Qt Design Studio项目向导模板生成的项目可以用CMake构建。意味着可以在Qt Creator中打开CMakeLists.txt项目文件,继续开发项目。原创 2022-09-19 21:19:02 · 3099 阅读 · 0 评论 -
【QML】使用Qt Design Studio创建时间线动画
对于时间线动画,本质上是插值动画,不会将属性立即就更改为目标值,而是由插值来驱动,而且可以选择动画曲线,来控制动画的插值方式。原创 2022-09-18 21:15:38 · 1177 阅读 · 0 评论 -
【QML】QML性能优化 | 3D场景优化
使用QML来做3D应用开发,优化3D场景和优化设计对3D应用程序将有着显著性能影响。本文描述几种优化3D场景的规则和方法。本文多数内容和观点参考于官方文档,并结合自己的实际使用整理完成。原创 2022-09-16 21:05:42 · 983 阅读 · 0 评论 -
【QML】使用Qt Design Studio设计UI动态行为
本文描述了如何在Qt Design Studio中创建连接和状态。在Qt Design Studio中使用视图设置的参数,都会在『Code』视图中添加对应的QML代码;反之,如果一个QML文件中已经存在相关的QML代码了,则会在Qt Design Studio中2D/3D视图下显示如果QML文档中存在错误或者存在Qt Design Studio不能识别的代码块时,Qt Design Studio将不能在对应的视图中正确显示。.ui.qml),该文件只用于在Qt Design Studio中编辑。原创 2022-09-15 21:15:39 · 2295 阅读 · 0 评论 -
【QML】一文入门QML应用程序的性能分析
在QML应用开发过程中,可以使用QML Profiler来查找应用程序中典型性能问题的原因,例如启动慢、响应慢、用户界面不流畅等。本文主要以QML Profiler工具本身出发,描述如何使用QML Profiler来分析QML应用,介绍其常规使用方法。原创 2022-09-15 20:47:26 · 911 阅读 · 0 评论 -
【QML】QML中的动画总结
随着目前的软件发展趋势,灵动炫酷的UI动画效果,将为产品增加一大卖点。在QML中,提供了很多用于设计炫酷动画的基本类型。本文将总结QML中的动画类型,以及一些类型的基本使用方法。原创 2022-09-12 08:31:52 · 315 阅读 · 0 评论 -
【QML】在QML中布局的四种方法
在实际QML应用开发中,我们几乎都是使用QtCreator的设计模式或者Qt Design Studio来对应用软件的组成元素进行布局。直接使用开发工具提供的图形界面接口操作qml文档即可,不用手动去编写和修改代码,这一点非常方便,效率也非常高。本文所述的四种QML应用组成元素的布局方法,在实际开发中,都会使用到,更多的时候是几种组合在一起去完成一个应用界面的布局,也有单独使用某种布局方法的情况出现。♥搜索关注『嵌入式小生』VX公众号,获取更多精彩内容♥。原创 2022-09-08 20:24:03 · 2719 阅读 · 0 评论 -
【qml】性能优化 | 常见的界面元素优化
性能优化在行业里永远是一个常谈的话题,该话题里的内容难以用准则来描述,而更多的是建议和规则。本文多数内容、观点和建议参考于Qt官方资料并结合自己的实际QML使用习惯总结而成。优化规则并不是“黄金规则”,更不是“金标准”。对于QML应用开发来说,将这些规则根据具体应用场景能合理运用即可。本文内容主要涉及到:Text类型、Image类型、模型试图和视觉效果四个方面的一些优化规则和推荐实践。原创 2022-09-06 09:19:57 · 390 阅读 · 0 评论 -
【QML】 如何导入QML文档目录
在QML工程中,本地目录中的QML文件可以在不需要附加设置或配置的情况下导入。一个本地目录中可能包含一个目录清单qmldir文件,用于定义提供的类型名,并指定提供给导入目录时可用的JavaScript资源。本地文件系统上的所有QML文件都可以使用绝对或相对路径的导入,导入时使用:import "目录名称”语句来完成。从而使我们能使用该目录中定义的对象类型。很多情况下,如果本地目录中包含一个qmldir文件,这些类型将通过qmldir文件中指定的类型名引用;...原创 2022-08-31 20:49:03 · 1298 阅读 · 0 评论 -
【qml】 QML属性绑定的三种方法
在属性绑定中,静态值的赋值将删除对象之间的绑定。即带有绑定的属性会根据需要自动更新。但是,如果绑定后再从JavaScript语句中为该属性分配一个静态值,那么该绑定将被删除。Window {id : button x : 270 y : 253 text : qsTr("点击我") onClicked : {//如果此点击事件处理函数得以执行,那么text1的text属性将被重新赋值为“999”。此后 //text1对象将与slider对象解除绑定。...原创 2022-08-29 21:06:09 · 918 阅读 · 0 评论 -
【qml】QML | 创建自定义组件(02)
组件通常由组件文件定义,也就是.qml文件。Component类型允许在一个QML文档内定义QML组件,而不用作为一个单独的QML文件,例如如下代码:该组件的封装代码是放置于main.qml这个应用根描述文件中的,我们运行一下:将得到一个空白的窗体。如果我们要使用这个组件,我们可以使用Loader类型,该QML类型用于:动态加载QML组件。...原创 2022-08-25 22:32:59 · 1488 阅读 · 1 评论 -
【qml】QML | 创建自定义组件(01)
QML应用软件的开发本质则是:```构建一棵QML类型对象树```,这颗对象树绝大部分代码会使用```json```和```JavaScript```语言来描述。这棵对象树的树根则是一个xxx.qml文件,该文件一般由**qml引擎**加载和解析,而qml引擎的创建则在一个C++文件的```main()```函数中。...原创 2022-08-25 22:21:20 · 1367 阅读 · 0 评论 -
【qml】QML最佳实践02
通常情况下,在QtCreator和Qt Designer studio中都有调整QML对象类型的布局方法。虽然Qt Quick Layouts通常是大多数开发场景的理想选择,本文总结实际使用中的几点注意事项。原创 2022-08-24 21:51:02 · 563 阅读 · 0 评论 -
【qml】QML最佳实践01
现如今,流畅、现代、高端大气的UI是目前任何一个应用程序成功的关键,这一点,也是QML对设计人员或开发人员意义重大的地方。在实的应用程序开发中,Qt提供了最基本的UI控件,这些控件是创建一个流畅和现代的UI所必需的东西。因此,当在我们的实际工程开发中,应事先浏览一下Qt提供的控件,如果没有符合我们自己的需求效果的,我们才去创建自定义的控件。(如何创建自定义控件,后续小生会写一篇来描述其大致过程和思路)我们可以通过以上“字母索引”寻找查看需要的QML类型。原创 2022-08-21 22:42:11 · 622 阅读 · 0 评论 -
【qml】QML与C++混合开发总结
在QtQuick开发中,QML应用程序通常需要用C++来处理高级和性能密集型的任务。为了实现这一点,最常见、最便捷的方法是:向QML运行时环境公开C++类(注意:该C++类必须派生自QObject),在Qt 5.7或更高版本中,本文将描述以下两个问题......原创 2022-08-18 22:46:29 · 562 阅读 · 0 评论 -
一列Qt事件处理机制分析不到位导致的Bug
一、Qt事件处理机制的知识总结(1-1)五种Qt事件使用方法总结方法一:重新实现部件的 paintEvent()、mousePressEvent() 等事件处理函数。这是最常用的一种方法(只能用来处理特定部件的特定事件)方法二:重新实现 notify() 函数。这个函数功能强大,提供了完全的控制,可以在事件过滤器得到事件之前就获得它们。(一次只能处理一个事件)方法三:向 QApplication 对象上安装事件过滤器。因为一个程序只有一个 QApplication 对象,所以这样实现的功原创 2021-11-25 21:09:38 · 349 阅读 · 0 评论 -
一种基于Qt多线程的数据接收方案
一、方案背景 很多时候,在进行数据接收时,会面临接收多个数据源的数据,例如:蓝牙设备、RS232通信设备、TCP/IP网络设备。为了统一,常常使目标数据的数据组织格式一样,因此对目标数据的解析方式大多一样。因此可以设计一个多线程的数据接收器,用于接收不同数据源的数据。二、实现思路(1)使QStringList来创建一个全局变量的【数据池】,使用QThread来创建一个读取数据池数据的线程,当读取到一个数据后,便发送“已读取到一个数据“的信号。(2)因数据池在应用程序中,大多情况只存在一个具体实例,原创 2021-11-23 21:38:54 · 2733 阅读 · 1 评论 -
Qt Quick的多国语言翻译
一、翻译Qt Quick应用软件对所有文字用户界面字符串使用qsTr()QML中的字符串可以使用qsTr()、qsTranslate()、qsTrId()、QT_TR_NOOP()、QT_TRANSLATE_NOOP()和QT_TRID_NOOP()函数进行标记以进行翻译。标记字符串最常见的方法是使用qsTr()函数。所以说,如果想要将应用界面中字符串进行翻译,那必须先标记。2、为翻译器添加上下文注释用户界面字符串通常很短,所以需要帮助翻译文本的人去理解文本的上下文含义,哈哈,一般开发人员怎么会原创 2021-11-21 14:46:24 · 1147 阅读 · 0 评论 -
【QML】qml信号和事件处理机制总结
文章目录一、引言二、用信号处理程序接收信号三、属性改变信号处理程序四、信号参数4-1、信号定义4-2、定义信号处理函数接收信号参数五、使用Connections qml类型创建信号连接六、连接信号处理函数七、使用connect将信号连接到方法和信号7-1、连接到方法7-2、连接到信号一、引言QML有一个信号和处理程序机制,其中信号是事件,通过信号处理程序对信号进行响应。当发出信号时,将调用相应的信号处理程序。在处理程序中放置逻辑(例如脚本或其他操作)允许组件响应事件。二、用信号处理程序接收信号 要原创 2021-11-20 12:26:06 · 4011 阅读 · 2 评论 -
【QML】在qml开发中定义对象类型
一、引言对象在程序设计领域是极其重要的概念,与哲学有着密切联系,哈哈,展开怕会扯到“形而上学”、“四书五经”。言归正传,本文来聊一聊和记录一些关于qml开发中对象的概念。从软件工程角度出发,分而治之,一个软件模块或者软件组件等,会由许多对象实体组成。例如C++中类和对象的概念,当然多态、继承、封装等C++经典思维就不聊了。使用qml进行软件开发,“对象思维”同样引领着qml软件的开发,软件的基础架构、软件组成源文件的规划等。文本主要记录内容如下:(1)在qml中如何自定义自己的对象(2)定义自定原创 2021-11-20 10:11:46 · 625 阅读 · 0 评论 -
【QML】qml的属性绑定总结
一、引言 属性绑定是QML的核心特性,它允许我们指定不同对象属性之间的关系。当属性的依赖项值发生变化时,该属性将根据指定的关系自动更新。 在幕后,QML引擎监视属性的依赖项(即绑定表达式中的变量)。当检测到更改时,QML引擎重新计算绑定表达式并将新结果应用到属性中,从而实现对象对其他对象之间的之间的属性绑定。 总而言之,属性绑定关系存在于多个QML对象类型之间,是QML的核心特性之一。二、进行qml属性绑定的方法 在QML中进行属性绑定主要三种方法:(1)使用冒号(:)进行属性绑定,原创 2021-11-19 21:59:14 · 3599 阅读 · 0 评论 -
【QML】qml动画机制总结
一、引言使用Qml进行项目开发时,往往需要控制一个显示控件的x,y,z三轴的坐标值,旋转,缩放,变化等。这些效果可以使用QML的动画类型进行实现。本文总结qml的动画机制,重点记录qml动画机制的主要QML类型,以及一些属性使用方法。二、qml动画机制的主要类型如上图所示,qml动画的根为Animation,在实际项目开发中,使用比较多的还是ColorAnimation、 NumberAnimation和RotationAnimation三个属性动画。三、Animation【属性】1、alw原创 2021-11-18 22:20:38 · 2297 阅读 · 0 评论 -
【QML】QML自定义按钮
一、引言在qml开发中,本文总结自己在开发中比较喜欢的实现自定义按钮的两种方式:(1)Button+states(2)Image + MouseArea【效果如下】—二、自定义按钮2-1、以贴图方式实现自定义按钮(直接上码啦)//【Button + states 实现】import QtQuick 2.10import QtQuick.Templates 2.1 as TT.Button { id: control implicitWidth: Math.max(原创 2021-11-17 22:03:16 · 3366 阅读 · 0 评论 -
【QML】如何在QML中添加自定义模块并使用
一、引言在《导入本地QML文档目录》一文中,记录了如何导入本地QML文档,本文将记录:如何在QML中使用自定义模块。二、过程记录本文以一个backend目录来存放自定义的模块,在该目录放置一个Data目录作为模块。其中用于描述模块的就有一个qmldir文件和Values.qml文件。如下图所示:(1)创建模块自定义一个数据QML类型,用于描述应用程序中所使用到的数据。在Values.qml放置以下内容:pragma Singletonimport QtQuick 2.10QtObje原创 2021-11-13 21:43:05 · 3799 阅读 · 1 评论 -
【QML】QML和C++混合开发-开发中问题总结
1、对于C++类属性的关联信号为了最大化与QML的互操作性,任何可写属性都应该有一个关联的通知信号,该信号在属性值发生更改时发出。这允许将属性与属性绑定一起使用,属性绑定是QML的一个基本特性,它通过在任何依赖项值发生变化时自动更新属性来强制属性之间的关系。2、对于派生自QObject的类通常无论qobject派生类是否已注册到QML类型系统,都可以从QML访问这些类。如果类本身是用作方法参数或属性,或者如果它的一个枚举类型中使用这种方式,此时该类就需要注册,否则,是不需要注册就可以直接访问的。【原创 2021-11-13 15:16:52 · 382 阅读 · 0 评论 -
【Qml】如何导入本地QML文档
一、引言QML文件的本地目录可以在不需要任何附加设置或配置的情况下导入。也可以导入QML文件的远程目录,但需要存在一个列出qmldir文件的目录。一个本地目录可能包含一个目录清单qmldir文件,以便定义应该提供给导入该目录的客户端的类型名,并指定应该提供给导入者的JavaScript资源。本文主题:从本地目录导入QML文档。二、从本地目录导入QML文档例如以下QML项目目录结构。在顶层目录myapp下,有一个名为mycomponents的子目录中有一组常见的UI组件,而主应用程序代码文件位于名为原创 2021-11-13 14:59:57 · 1383 阅读 · 0 评论 -
【QML】QML和C++混合开发(02) - 向QML导出C++方法(包括槽函数)
一、引言在《【Qml】QML和C++混合开发(01) - 将C++类公开给QML》一本中总结了如何向QML公开C++类的数据属性。那么对于C++类的方法同样也能公开给QML,本文将分享、总结如何向QML导出C++方法。二、核心点记录1、声明成员函数对于QObject派生类型的任何方法都可以从QML代码中访问,例如:(1)使用Q_INVOKABLE()宏标记的公共方法。(2)公共Qt槽函数。以上方法都可以在QML中方法到。如下代码片段:class MessageBoard : public原创 2021-11-13 12:15:43 · 386 阅读 · 0 评论 -
【QML】QML和C++混合开发(01) - 将C++类公开给QML
一、引言QML应用程序通常需要用C++来处理更高级和性能密集型的任务。最常见、最便捷的方法是:向QML运行时环境公开C++类(注意:该类必须派生自QObject),在Qt 5.7或更高版本下,本文将分享和总结如何在QML应用程序中使用C++类。【主题】:(1)在qml中访问C++类中的数据。二、具体步骤总结1、创建一个C++类:Datas类//datas.h#ifndef DATAS_H#define DATAS_H#include <QObject>#include &原创 2021-11-13 11:35:32 · 200 阅读 · 0 评论