QT6学习第六天 初识QML
QT6学习第六天
- 创建Qt Quick UI项目
- 使用Qt Quick Designer
- QML 语法基础
- 导入语句 import
- 对象 object 和属性 property
- 布局
- 注释
- 表达式和属性绑定
- QML 编码约定
- 设置应用程序图标
创建Qt Quick UI项目
如果你有只测试QML相关内容快速显示界面的需求,这时可以创建Qt Quick UI 项目,该项目中只包含 QML 和 JavaScript 代码,没有 C++ 代码。
对于 QML 文件,无须编译就可以直接在预览工具中显示界面,也就是说,Qt Quick UI 只是前端,而 Qt Quick 是包含前端和后端的,只是进行了前后端分离,因为前端使用了 QML。
我们来新建项目,选择其他项目中的 Qt Quick UI Prototype。命名 helloqml。
我们看到,和Qt Quick 项目没啥区别,多了一个文件 pmlproject,我们打开看看。
能看出来,它包含了项目配置信息,指定了项目中所用的 QML、JavaScript、image等文件的目录,也就是说,只要将所用的资源放到源码目录,就可以在代码中直接使用。
Ctrl + R 运行一下,看到程序没有编译,直接显示了界面,其实锤子图标都没有亮,内部只是启动了 qml.exe 工具,这个工具我们通过“工具 -> 外部 -> Qt Quick”菜单可找到。
使用Qt Quick Designer
Qt Widgets 有Designer,Qt Quick 当然也有,只是它是以插件的形式,目前还没开启,你可以通过 Qt Designer Studio(要花钱) 来使用。
在“帮助 -> 关于插件”菜单中可以打开安装的插件。勾上 QmlDesigner 就好了,然后当你编辑 QML 文件时,就可以进入设计模式了。

QML 语法基础
从前面的例子可以看到,QML 代码时高度可读的、声明式的代码,具有类似 JSON 的语法,支持使用 JavaScript 表达式,具有动态属性绑定等特性。Qt 6 中通过导入 Qt QML 模块来使用 QML 语言,它定义并实现了 QML 语言及其解释引擎的基础构件,提供了开发人员进行扩展的接口,以及将 QML 代码与 JavaScript 和 C++ 集成在一起的接口。
我们通过一些简单示例来了解 QML 语法基础概念,
示例
import QtQuickRectangle{id:rootwidth:400height:400color:"blue"Image{source:"pics/logo.png"anchors.centerIn:parent}
}
导入语句 import
代码中导入了 QtQuick 模块,它包含各种 QML 类型,不导入它,将无法使用下边的 Rectangle 和 Image
对象 object 和属性 property
QML 代码就是一个 QML 对象树,上边代码中创建了两个对象实例 Rectangle 、Image。QML对象实例通过对象声明来创建,方式为 Image{},括号里包含对象的特征定义,比如 id 属性值等,还可以嵌套对象声明来声明子对象。
一般每个对象都会有一个 id 属性,通过 id 来被别人调用,其值必须是唯一的。当然还有其他属性,比如上面的 width height color source anchors 都是属性。执行代码时,这些属性就跟着对象一起初始化了。
布局
上面的 anchors.centerIn 起到了布局的作用。它使 Image 处于 某个对象(parent)的中心,这里 parent 指父对象,也就是 Rectangle。除了 anchors ,QML 还提供了很多其他布局方式。
注释
QML 的注释和 C++ 类似。
单行注释用 //
多行注释用 /…/
表达式和属性绑定
就是一个表达式,里面的因子可以用属性值。
举个栗子:a * b = c 可以写成 parent.width * b = c
QML 编码约定
就是规定了一种风格,推荐大家都按这个来。
QML 对象一般使用下面的顺序进行构造:id、属性声明、信号声明、JavaScript函数、对象属性、子对象
设置应用程序图标
让你发布的程序有一个自定义的图标。
可以在 Qt Creator 帮助索引中查找 Setting the Application Icon 学习
- Windows系统方式为
一个创建 .ico 文件,放到源码目录中。
修改 pro 文件,添加代码RC_ICONS = myico.ico
相关文章:
QT6学习第六天 初识QML
QT6学习第六天 创建Qt Quick UI项目使用Qt Quick DesignerQML 语法基础导入语句 import对象 object 和属性 property布局注释表达式和属性绑定QML 编码约定 设置应用程序图标 创建Qt Quick UI项目 如果你有只测试QML相关内容快速显示界面的需求,这时可以创建Qt Qui…...
映射vim键位,基本功能键位表(未更完)
键位映射:建议使用jj代替esc,毕竟esc离手那么远 linux下修改方法是:vim /etc/vim/vimrc 在该文件尾添加inoremap jj <Esc>该方法可以同样可以用到其他键位映射上 i:表示这个映射是在插入模式(insert mode)下有效…...
Python学习笔记(5)Python的创建型设计模式
创建型设计模式(Creational Design Patterns),主要关注对象的创建机制。这类模式可以使得系统更加独立于如何创建、组合和表示其对象。通过将这些职责分离出来,创建型设计模式有助于提高代码的灵活性和复用性。 本书的范例代码已经…...
qt QAnimationDriver详解
1、概述 QAnimationDriver是Qt框架中提供的一个类,它主要用于自定义动画帧的时间控制和更新。通过继承和实现QAnimationDriver,开发者可以精确控制动画的时间步长和更新逻辑,从而实现丰富和灵活的动画效果。QAnimationDriver与QAbstractAnim…...
零拷贝相关知识点(一)
前言 大家好,我是程序员田螺。 零拷贝是老生常谈的问题啦,大厂非常喜欢问。比如Kafka为什么快,RocketMQ为什么快等,都涉及到零拷贝知识点。最近技术讨论群几个伙伴分享了阿里、虾皮的面试真题,也都涉及到零拷贝。因此…...
STM32的CAN波特率计算
公式: CAN波特率 APB总线频率 / (BRP分频器 1)/ (SWJ BS1 BS2) SWJ一般为1。 例如STM32F407的,CAN1和CAN2都在在APB1下,频率是42000000 如果想配置成1M波特率,则计算公式为:...
简单好用的折线图绘制!
折线图的概念及作用: 折线图(Line Chart)是一种常见的图表类型,用于展示数据的变化趋势或时间序列数据。它通过一系列的数据点(通常表示为坐标系中的点)与这些点之间的线段相连,直观地展示变量…...
Hadoop批量计算实验
参考: Hadoop(一)之实验一CentOS7配置Hadoop系统:配置CentOS和下载安装包_基于虚拟机cents7搭建hadoop实验目的-CSDN博客 --------------------------------------------------------- 一、安装Vmware 二、创建虚拟机 1.安装centos7 ①打开VMware,点击新建虚拟机。 …...
基于rpcapd与wireshark的远程实时抓包的方法
基于rpcapd与wireshark的远程实时抓包的方法 服务端安装wireshark侧设置 嵌入式设备或服务器上没有图形界面,通常使用tcpdump抓包保存为pcap文件后,导出到本地使用wireshark打开分析,rpcapd可与wireshark配合提供一种远程实时抓包的方案&…...
ubuntu多版本安装gcc
1.ubuntu安装gcc 9.3.1 $ sudo apt update $ sudo apt install gcc-9 g-9 二、配置GCC版本 安装完成后,需要使用update-alternatives命令来配置GCC版本。这个命令允许系统在多个安装的版本之间进行选择 1.添加GCC 9.3.1到update-alternatives管理 $ sudo update-a…...
算法刷题Day1
BM47 寻找第k大 第一天就随便记录吧,万事开头难,我好不容易开的头,就别难为自己,去追求高质量了。嘿嘿嘿 题目 传送门 解题思路一:维护一个大小为k的最小堆。最后返回堆顶元素。 代码: # # 代码中的类名…...
泛化调用 :在没有接口的情况下进行RPC调用
什么是泛化调用? 在RPC调用的过程中,调用端向服务端发起请求,首先要通过动态代理,动态代理可以屏蔽RPC处理流程,使得发起远程调用就像调用本地一样。 RPC调用本质:调用端向服务端发送一条请求消息&#x…...
Java 泛型详细解析
泛型的定义 泛型类的定义 下面定义了一个泛型类 Pair,它有一个泛型参数 T。 public class Pair<T> {private T start;private T end; }实际使用的时候就可以给这个 T 指定任何实际的类型,比如下面所示,就指定了实际类型为 LocalDate…...
题解:CF332B Maximum Absurdity
CF332B CF332B 暴力思路 题目要我们找两个不重叠的区间,并使区间的值最大。那我们可以考虑使用双重循环搭配前缀和暴力求最大值。代码如下。 for(int i1;i<n;i) {ll lsum[ik-1]-sum[i-1],maxx;for(int jik;j<n;j){maxxlsum[jk-1]-sum[j-1];if(maxx>ans.…...
Vue 集成和使用 SQLite 的完整指东
1. 引言 SQLite 是一种轻量级的关系型数据库管理系统,以其简单易用、无需服务器等特点广泛应用于嵌入式系统、移动应用和小型应用程序中。在 Web 开发中,尤其是前端应用开发中,SQLite 可以作为客户端本地存储的一种选择,为用户提…...
【JVM什么时候触发YoungGC和FullGC】
YoungGC 年轻代Eden区满,就会触发YoungGC FullGC 老年代空间不足 经过多次GC后的大年龄对象会被放进老年代,或创建的大对象会直接在老年代分配,此时若老年代空间不足,就会触发FullGC。空间分配担保失败 触发YoungGC的时候会进行…...
ubuntu配置网络
1,设置桥接模式 1-1: 确定。 1-2: 编辑--->虚拟网络编辑器 刚安装ubuntu的时候,可能没有任何VMnet. 更改设置的目的: 添加VMnet0,并且设置VMnet为桥接模式--自动桥接。 如果没有VMnet0,选择添加网络…...
第十一课 Unity编辑器创建的资源优化_预制体和材质篇(Prefabs和Materials)详解
预制体(Prefabs) Unity中的预制体是用来存储游戏对象、子对象及其所需组件的可重用资源,一般来说预制体资源可充当资源模版,在此模版基础上可以在场景中创建新的预制体实例。 使用预制体的好处 由于预制体系统可以自动保持所有实例副本同步,…...
2024.11.29(单链表)
思维导图 声明文件 #ifndef __LINKLIST_H__ #define __LINKLIST_H__#include <myhead.h>typedef char datatype; //数据元素类型 //定义节点类型 typedef struct Node {union{int len; //头节点数据域datatype data; //普通节点数据域};struct Node *next; //指针域…...
基于深度学习和卷积神经网络的乳腺癌影像自动化诊断系统(PyQt5界面+数据集+训练代码)
乳腺癌是全球女性中最常见的恶性肿瘤之一,早期准确诊断对于提高生存率具有至关重要的意义。传统的乳腺癌诊断方法依赖于放射科医生的经验,然而,由于影像分析的复杂性和人类判断的局限性,准确率和一致性仍存在挑战。近年来…...
League-Toolkit:智能辅助驱动的英雄联盟效率提升解决方案
League-Toolkit:智能辅助驱动的英雄联盟效率提升解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Tool…...
告别8小时UI适配工作:3大核心能力重新定义Figma到Unity流程
告别8小时UI适配工作:3大核心能力重新定义Figma到Unity流程 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge 在游戏开发…...
如何零门槛集成专业金融图表?从技术选型到上线的全流程攻略
如何零门槛集成专业金融图表?从技术选型到上线的全流程攻略 【免费下载链接】charting-library-examples Examples of Charting Library integrations with other libraries, frameworks and data transports 项目地址: https://gitcode.com/gh_mirrors/ch/charti…...
QQ机器人开发零基础入门:LuckyLilliaBot插件完全指南
QQ机器人开发零基础入门:LuckyLilliaBot插件完全指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 在即时通讯机器人开发领域,如何快速实现QQ平台的自动化交互?…...
LeetCode 53. 最大子数组和 超详细题解(贪心+分治+动规)
LeetCode 53. 最大子数组和 超详细题解(贪心分治动规) 🏷️ 标签:动态规划、贪心算法、分治法、数组、经典面试题 📊 难度:简单 | 📝 题目编号:53 | 🗂️ 题型࿱…...
LabVIEW标准表法开发气体流量标准装置
标准表法是气体流量计检定校准的主流方法,针对气体流量检测过程中自动化程度低、数据采集精度不足、设备控制协同性差的问题,依托 LabVIEW 图形化编程平台搭建气体流量标准装置应用系统,实现温度、压力、流量等参数的自动化采集、设备精准调控…...
AvrLib-fork:面向AVR的C++14零开销硬件抽象库
1. 项目概述AvrLib-fork 是一个面向 AVR 微控制器平台的高度类型安全、现代 C(C14 兼容)嵌入式库,专为 PlatformIO 生态系统深度优化设计。它并非 Arduino Core 的简单封装,而是一套从底层硬件抽象出发、以零开销抽象(…...
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Web界面汉化+响应式布局适配移动端指南
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Web界面汉化响应式布局适配移动端指南 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型,特别适合在资源有限的环境中快速部署使用。这个镜像内置了GGUF模型文件和llama.cpp…...
考研数学二必备:多元函数极值最值实战技巧(附拉格朗日乘数法详解)
考研数学二多元函数极值最值实战指南:从基础到高阶解题策略 多元函数极值与最值问题在考研数学二中占据重要地位,每年真题中至少出现1-2道大题。许多考生在面对这类问题时容易陷入"知道概念但不会解题"的困境。本文将打破传统教材的讲解顺序&a…...
3个步骤在Docker容器中运行本地Windows ISO镜像:从配置到优化
3个步骤在Docker容器中运行本地Windows ISO镜像:从配置到优化 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 问题导入:为什么需要本地ISO镜像? 在使用Doc…...
