当前位置: 首页 > news >正文

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键位,基本功能键位表(未更完)

键位映射&#xff1a;建议使用jj代替esc,毕竟esc离手那么远 linux下修改方法是&#xff1a;vim /etc/vim/vimrc 在该文件尾添加inoremap jj <Esc>该方法可以同样可以用到其他键位映射上 i&#xff1a;表示这个映射是在插入模式&#xff08;insert mode&#xff09;下有效…...

Python学习笔记(5)Python的创建型设计模式

创建型设计模式&#xff08;Creational Design Patterns&#xff09;&#xff0c;主要关注对象的创建机制。这类模式可以使得系统更加独立于如何创建、组合和表示其对象。通过将这些职责分离出来&#xff0c;创建型设计模式有助于提高代码的灵活性和复用性。 本书的范例代码已经…...

qt QAnimationDriver详解

1、概述 QAnimationDriver是Qt框架中提供的一个类&#xff0c;它主要用于自定义动画帧的时间控制和更新。通过继承和实现QAnimationDriver&#xff0c;开发者可以精确控制动画的时间步长和更新逻辑&#xff0c;从而实现丰富和灵活的动画效果。QAnimationDriver与QAbstractAnim…...

零拷贝相关知识点(一)

前言 大家好&#xff0c;我是程序员田螺。 零拷贝是老生常谈的问题啦&#xff0c;大厂非常喜欢问。比如Kafka为什么快&#xff0c;RocketMQ为什么快等&#xff0c;都涉及到零拷贝知识点。最近技术讨论群几个伙伴分享了阿里、虾皮的面试真题&#xff0c;也都涉及到零拷贝。因此…...

STM32的CAN波特率计算

公式&#xff1a; CAN波特率 APB总线频率 / &#xff08;BRP分频器 1&#xff09;/ (SWJ BS1 BS2) SWJ一般为1。 例如STM32F407的&#xff0c;CAN1和CAN2都在在APB1下&#xff0c;频率是42000000 如果想配置成1M波特率&#xff0c;则计算公式为&#xff1a;...

简单好用的折线图绘制!

折线图的概念及作用&#xff1a; 折线图&#xff08;Line Chart&#xff09;是一种常见的图表类型&#xff0c;用于展示数据的变化趋势或时间序列数据。它通过一系列的数据点&#xff08;通常表示为坐标系中的点&#xff09;与这些点之间的线段相连&#xff0c;直观地展示变量…...

Hadoop批量计算实验

参考: Hadoop(一)之实验一CentOS7配置Hadoop系统:配置CentOS和下载安装包_基于虚拟机cents7搭建hadoop实验目的-CSDN博客 --------------------------------------------------------- 一、安装Vmware 二、创建虚拟机 1.安装centos7 ①打开VMware,点击新建虚拟机。 …...

基于rpcapd与wireshark的远程实时抓包的方法

基于rpcapd与wireshark的远程实时抓包的方法 服务端安装wireshark侧设置 嵌入式设备或服务器上没有图形界面&#xff0c;通常使用tcpdump抓包保存为pcap文件后&#xff0c;导出到本地使用wireshark打开分析&#xff0c;rpcapd可与wireshark配合提供一种远程实时抓包的方案&…...

ubuntu多版本安装gcc

1.ubuntu安装gcc 9.3.1 $ sudo apt update $ sudo apt install gcc-9 g-9 二、配置GCC版本 安装完成后&#xff0c;需要使用update-alternatives命令来配置GCC版本。这个命令允许系统在多个安装的版本之间进行选择 1.添加GCC 9.3.1到update-alternatives管理 $ sudo update-a…...

算法刷题Day1

BM47 寻找第k大 第一天就随便记录吧&#xff0c;万事开头难&#xff0c;我好不容易开的头&#xff0c;就别难为自己&#xff0c;去追求高质量了。嘿嘿嘿 题目 传送门 解题思路一&#xff1a;维护一个大小为k的最小堆。最后返回堆顶元素。 代码&#xff1a; # # 代码中的类名…...

泛化调用 :在没有接口的情况下进行RPC调用

什么是泛化调用&#xff1f; 在RPC调用的过程中&#xff0c;调用端向服务端发起请求&#xff0c;首先要通过动态代理&#xff0c;动态代理可以屏蔽RPC处理流程&#xff0c;使得发起远程调用就像调用本地一样。 RPC调用本质&#xff1a;调用端向服务端发送一条请求消息&#x…...

Java 泛型详细解析

泛型的定义 泛型类的定义 下面定义了一个泛型类 Pair&#xff0c;它有一个泛型参数 T。 public class Pair<T> {private T start;private T end; }实际使用的时候就可以给这个 T 指定任何实际的类型&#xff0c;比如下面所示&#xff0c;就指定了实际类型为 LocalDate…...

题解:CF332B Maximum Absurdity

CF332B CF332B 暴力思路 题目要我们找两个不重叠的区间&#xff0c;并使区间的值最大。那我们可以考虑使用双重循环搭配前缀和暴力求最大值。代码如下。 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 是一种轻量级的关系型数据库管理系统&#xff0c;以其简单易用、无需服务器等特点广泛应用于嵌入式系统、移动应用和小型应用程序中。在 Web 开发中&#xff0c;尤其是前端应用开发中&#xff0c;SQLite 可以作为客户端本地存储的一种选择&#xff0c;为用户提…...

【JVM什么时候触发YoungGC和FullGC】

YoungGC 年轻代Eden区满&#xff0c;就会触发YoungGC FullGC 老年代空间不足 经过多次GC后的大年龄对象会被放进老年代&#xff0c;或创建的大对象会直接在老年代分配&#xff0c;此时若老年代空间不足&#xff0c;就会触发FullGC。空间分配担保失败 触发YoungGC的时候会进行…...

ubuntu配置网络

1&#xff0c;设置桥接模式 1-1&#xff1a; 确定。 1-2&#xff1a; 编辑--->虚拟网络编辑器 刚安装ubuntu的时候&#xff0c;可能没有任何VMnet. 更改设置的目的&#xff1a; 添加VMnet0&#xff0c;并且设置VMnet为桥接模式--自动桥接。 如果没有VMnet0,选择添加网络…...

第十一课 Unity编辑器创建的资源优化_预制体和材质篇(Prefabs和Materials)详解

预制体(Prefabs) Unity中的预制体是用来存储游戏对象、子对象及其所需组件的可重用资源&#xff0c;一般来说预制体资源可充当资源模版&#xff0c;在此模版基础上可以在场景中创建新的预制体实例。 使用预制体的好处 由于预制体系统可以自动保持所有实例副本同步&#xff0c…...

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界面+数据集+训练代码)

乳腺癌是全球女性中最常见的恶性肿瘤之一&#xff0c;早期准确诊断对于提高生存率具有至关重要的意义。传统的乳腺癌诊断方法依赖于放射科医生的经验&#xff0c;然而&#xff0c;由于影像分析的复杂性和人类判断的局限性&#xff0c;准确率和一致性仍存在挑战。近年来&#xf…...

League-Toolkit:智能辅助驱动的英雄联盟效率提升解决方案

League-Toolkit&#xff1a;智能辅助驱动的英雄联盟效率提升解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Tool…...

告别8小时UI适配工作:3大核心能力重新定义Figma到Unity流程

告别8小时UI适配工作&#xff1a;3大核心能力重新定义Figma到Unity流程 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge 在游戏开发…...

如何零门槛集成专业金融图表?从技术选型到上线的全流程攻略

如何零门槛集成专业金融图表&#xff1f;从技术选型到上线的全流程攻略 【免费下载链接】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机器人开发零基础入门&#xff1a;LuckyLilliaBot插件完全指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 在即时通讯机器人开发领域&#xff0c;如何快速实现QQ平台的自动化交互&#xff1f…...

LeetCode 53. 最大子数组和 超详细题解(贪心+分治+动规)

LeetCode 53. 最大子数组和 超详细题解&#xff08;贪心分治动规&#xff09; &#x1f3f7;️ 标签&#xff1a;动态规划、贪心算法、分治法、数组、经典面试题 &#x1f4ca; 难度&#xff1a;简单 | &#x1f4dd; 题目编号&#xff1a;53 | &#x1f5c2;️ 题型&#xff1…...

LabVIEW标准表法开发气体流量标准装置

标准表法是气体流量计检定校准的主流方法&#xff0c;针对气体流量检测过程中自动化程度低、数据采集精度不足、设备控制协同性差的问题&#xff0c;依托 LabVIEW 图形化编程平台搭建气体流量标准装置应用系统&#xff0c;实现温度、压力、流量等参数的自动化采集、设备精准调控…...

AvrLib-fork:面向AVR的C++14零开销硬件抽象库

1. 项目概述AvrLib-fork 是一个面向 AVR 微控制器平台的高度类型安全、现代 C&#xff08;C14 兼容&#xff09;嵌入式库&#xff0c;专为 PlatformIO 生态系统深度优化设计。它并非 Arduino Core 的简单封装&#xff0c;而是一套从底层硬件抽象出发、以零开销抽象&#xff08;…...

LFM2.5-1.2B-Thinking-GGUF保姆级教程:Web界面汉化+响应式布局适配移动端指南

LFM2.5-1.2B-Thinking-GGUF保姆级教程&#xff1a;Web界面汉化响应式布局适配移动端指南 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型&#xff0c;特别适合在资源有限的环境中快速部署使用。这个镜像内置了GGUF模型文件和llama.cpp…...

考研数学二必备:多元函数极值最值实战技巧(附拉格朗日乘数法详解)

考研数学二多元函数极值最值实战指南&#xff1a;从基础到高阶解题策略 多元函数极值与最值问题在考研数学二中占据重要地位&#xff0c;每年真题中至少出现1-2道大题。许多考生在面对这类问题时容易陷入"知道概念但不会解题"的困境。本文将打破传统教材的讲解顺序&a…...

3个步骤在Docker容器中运行本地Windows ISO镜像:从配置到优化

3个步骤在Docker容器中运行本地Windows ISO镜像&#xff1a;从配置到优化 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 问题导入&#xff1a;为什么需要本地ISO镜像&#xff1f; 在使用Doc…...