Qt QML的枚举浅用

news2025/1/15 16:54:01

QML的枚举用法

  • 序言
  • 概念
    • 命名规则
    • 在QML定义枚举的规范
  • 用法
    • QML的枚举定义方法
    • 供QML调用的,C++的枚举定义方法

序言

概念

QML的枚举和C++的其实差不多,但是呢,局限比较多,首先不能在main.qml里定义,也不能在子项中定义

解释:

  1. main.qml的根节点定义枚举,没法用main.或者Main.
  2. 子项中定义,比如说Rectangle里的Text,你没法寻到此处的枚举,直接Text.也不合适,Text本身没有定义你自定义的枚举,你是调用不了的

只允许两种定义方法,一种是自定义控件里的根节点定义,另一种是通过C++的Q_ENUM定义。

注:以上非绝对,只是自己的经验总结,可能只是暂时没遇到正确方法

命名规则

枚举要想在QML里用,命名需要满足两个条件:

1.枚举名首字母必须是大写,不大写的话也会编译不过:

enum rectType {		//编译不过
...
enum RectType {		//编译通过

在这里插入图片描述

  1. 枚举项首字母也必须是大写:
enum RectType {
	enum1,		// 编译不过
	Enum2,		// 编译通过

在这里插入图片描述
以上是QML会编译出错,但是要想在QML里用,C++也要遵守

在QML定义枚举的规范

与C++相比,枚举项的末项不能有,,末尾的}后也无需;

enum RectType {
	Rect1,
	Rect2,
	Rect3,		//编译出错,不能加,
}

用法

QML的枚举定义方法

如概念说的,在自定义组件中的根节点定义枚举。

如果有属性获取的话,可以用int或者var承载

testRect.qml

...

Rectangle {
	...
	enum RectType {
		Rect1,
		Rect2,
		Rect3
	}

	//property int rectT: TestRect.Rect1	//有时可以,有时会是undefined
	property int rectT: TestRect.RectType.Rect1
	...
}

调用方法:[自定义组件名(首字母大写)].[枚举名].[枚举项]

供QML调用的,C++的枚举定义方法

具体怎么QML调用C++的过程省略,这不是本节重点

C++定义需要遵守,枚举名首字母大写,枚举项大写的规则

class TestRect	...
...
public:
	enum RectType {
		Rect1,
		Rect2,
		Rect3,
	};
	Q_ENUM(RectType)
...
	...
	console.log(TestRect.Rect2)

调用方法:

  1. [自定义组件名(首字母大写)].[枚举项]
  2. [自定义组件名(首字母大写)].[枚举名].[枚举项]

另外,如果不是用enum,而是用enum class,那么调用方法就强制只能中间有枚举名
调用方法:[自定义组件名(首字母大写)].[枚举名].[枚举项]

	console.log(TestRect.RectType.Rect3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1569726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java spring 01 (图灵)

01.依赖注入 这里两个方法用到了datasource方法,不是bean这样的使用,没有autowird 会创建两个datasource configuration 会运行代理模式 会产生一个AppConfig的代理对象 这个代理对象会在spring的容器先找bean,datasource此时已经创建了be…

ubuntu无法粘贴复制windows中的内容,分辨率无法自适应电脑自带系统

1、直接在命令行执行以下命令 sudo apt-get autoremove open-vm-tools //卸载已有的工具 sudo apt-get install open-vm-tools //安装工具open-vm-tools sudo apt-get install open-vm-tools-desktop //安装open-vm-tools-desktop 2、重启Ubuntu系统即可 3.如果上述…

【QT+QGIS跨平台编译】056:【pdal_lazperf+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal_lazperf介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_lazperf介绍 pdal_lazperf 是 PDAL(Point Data Abstraction Library)的一个插件,用于处理点云数据。PDAL 是一个开源的库,用于处理和分析地理空间数据,特别是点云…

Linux集群部署项目

目录 一,环境准备 1.1.安装MySQL 1.2.安装JDK 1.3.安装TomCat 1.4.安装Nginx 二,部署 2.1.后台服务部署 2.2.Nginx配置负载均衡及静态资源部署 一,环境准备 1.1.安装MySQL 将MySQL的安装包上传至服务器 查看系统中是否存在mariadb&…

了解 Solidity 语言:构建智能合约的首选编程语言

了解 Solidity 语言:构建智能合约的首选编程语言 Solidity 是一种用于编写智能合约的高级编程语言,广泛应用于以太坊和其他以太坊虚拟机(EVM)兼容的区块链平台。它是以太坊智能合约的首选语言之一,具有丰富的功能和灵活…

GD32F470_GY-SHT31-D 数字温湿度传感器模块移植

2.11 SHT30温湿度传感器 2.11.1 模块来源 采购链接: GY-SHT31-D 数字温湿度传感器模块 资料下载链接: https://pan.baidu.com/s/1kisMJspcV6Qdr1ye9ElOlQ 2.11.2 规格参数 工作电压:2.4-5.5V 工作电流:0.2~1500uA 温度测量范围&a…

微软文本转语音和语音转文本功能更新,效果显著!

今天我要和大家分享一个新功能更新——微软的文本转语音和语音转文本功能。最近,微软对其AI语音识别和语音合成技术进行了重大升级,效果非常好,现在我将分别为大家介绍这两个功能。 先来听下这个效果吧 微软文本转语音和语音转文本功能更新 …

CVPR24_ArGue: Attribute-Guided Prompt Tuning for Vision-Language Models

Abstract 尽管软提示微调在调整视觉语言模型以适应下游任务方面表现出色,但在处理分布偏移方面存在局限性,通过属性引导提示微调(Attribute-Guided,ArGue)来解决这个问题 Contributions 与直接在类名之前添加软提示…

浅析JavaWeb内存马基础原理与查杀思路

文章目录 前言Java内存马内存马分类&原理JavaWeb三大组件注入Servlet内存马注入Filter型内存马JAVA Agent内存马 哥斯拉木马0x01 WebShell0x02 MemShell0x03 FilterShell0x04 Arthas排查0x05 scanner查杀 总结 前言 几年前写过《Web安全-一句话木马》,主要介绍…

大意了MySQL关键字EXPLAIN

一、问题 然后explain带了单引号、以区别其关键字 二、报错如下 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near explain, us.nickname AS user_send_nickname, ua.nickname…

探索未来智慧酒店网项目接口架构

在数字化时代,智慧酒店已成为酒店业发展的重要趋势之一。智慧酒店网项目接口架构作为支撑智慧酒店运营的核心技术之一,其设计和优化对于提升用户体验、提高管理效率具有重要意义。本文将深入探讨智慧酒店网项目接口架构的设计理念和关键要素。 ### 智慧…

上位机图像处理和嵌入式模块部署(qmacvisual并发执行)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 类似于qmacvisual这样的软件,其实价格并不便宜。比如大家熟知的halcon、vision pro、vision master这样的软件,最便宜的版本…

练习实践-TLS02-会话恢复的两种形式-Session ID/SessionTicket

参考来源: 书籍:深入浅出https-从原理到实战(作者:虞卫东) 抓包分析文件可下载,来自github上的作者上传资源 会话恢复机制的背景 当客户端和服务器端握手成功,建立了一个完整的 TLS 连接&…

基于keepalived+gtid+双vip半同步主从复制的MySQL高性能集群

项目名称:基于keepalivedgtid双vip半同步主从复制的MySQL高性能集群 目录 项目名称:基于keepalivedgtid双vip半同步主从复制的MySQL高性能集群 项目规划图 1.配置4台MySQL服务器(1台master,2台slave,1台backup&a…

【Django开发】0到1美多商城项目md教程第5篇:短信验证码,1. 避免频繁发送短信验证码逻辑分析【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

江协STM32:定时器定时中断和定时器定时闹钟

定时器中断 新建文件 按这个图来编写程序 第一步:RCC开启时钟,定时器到基准时钟和整个外设到工作时钟就会同时打开 第二步:选择时基单元的时钟源,对于定时中断选择内部时钟源 第三步:配置时基单元,ARR,P…

CSS设置网页背景

目录 概述: 1.background-color: 2.background-image: 3.background-repeat: 4.background-position: 5.background-attachment: 6.background-size: 7.background-origin: 8.background-…

【Linux】Ubuntu 磁盘管理

准备一个U盘或者SD卡(含读卡器),并将其格式化成 FAT32 格式,不要使用NTFS格式(这是微软的专利,大部分Linux系统不支持)和exFAT格式(有的Linux系统也不支持)。 如果Ubun…

Linux云计算之Linux基础2——Linux发行版本的安装

目录 一、彻底删除VMware 二、VMware-17虚拟机安装 三、MobaXterm 安装 四、Centos 发行版 7.9的安装 五、rockys 9.1的安装 六、ubuntu2204的安装 一、彻底删除VMware 在卸载VMware虚拟机之前,要先把与VMware相关的服务和进程终止 1. 在windows中按下【Windo…

【算法练习】28:选择排序学习笔记

一、选择排序的算法思想 弄懂选择排序算法,先得知道两个概念:未排序序列,已排序序列。 原理:以升序为例,选择排序算法的思想是,先将整个序列当做未排序的序列,以序列的第一个元素开始。然后从左…