Qt QML的枚举浅用

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	//有时可以,有时会是undefinedproperty 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.mzph.cn/news/791477.shtml

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

相关文章

C++语言学习(二)——⭐缺省参数、函数重载、引用

1.⭐缺省参数 &#xff08;1&#xff09;缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void Func(int a 0) {cout<<a<<endl; } int…

MySQL的基本操作(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 &#x1f4d4;&#xff08;零基础&#xff09;专栏&#xff1a;MSQL数据库 欢迎&#x1f64f;点赞&…

flutter官方案例context_menus【搭建与效果查看】【省时】

案例地址 https://github.com/flutter/samples/tree/main/context_menus 1&#xff1a;运行查看有什么可以快捷使用的&#xff0c;更新了些什么&#xff0c;可不可以直接复制粘贴 主要内容&#xff1a;在web端中模拟手机类型的点击长按操作&#xff0c;不能直接运行在安卓与io…

如何处理Jenkins打包npm install没有拉取到最新依赖的问题

问题背景&#xff1a; 我们项目中有私有依赖包 frame&#xff0c;是私有服务器上通过 npm 去管理。frame包 publish 之后&#xff0c;通过Jenkins打包时&#xff0c;npm install 一直没有拉取最新的代码。 思考&#xff1a;通过在本地直接替换 node_modules 里的 frame 包&…

element-ui divider 组件源码分享

今日简单分享 divider 组件&#xff0c;主要有以下两个方面&#xff1a; 1、divider 组件页面结构 2、divider 组件属性 一、组件页面结构 二、组件属性 2.1 direction 属性&#xff0c;设置分割线方向&#xff0c;类型 string&#xff0c;horizontal / vertical&#xff0…

SQLite下一代查询规划器(十)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite 查询优化器概述&#xff08;九&#xff09; 下一篇&#xff1a;SQLite的架构&#xff08;十一&#xff09; 1. 引言 “查询规划器”的任务是弄清楚 找出完成 SQL 语句的最佳算法或“查询计划”。 从 SQLi…

VS2013报错The request was aborted: Could not create SSL/TLS secure channel.

问题描述 Visual Studio 2013 Nuget&#xff08;扩展和更新&#xff09;无法连接网络分析和解决方法A connection to the server could not be established because the following error(s) occurred&#xff1a; The request was aborted: Could not create SSL/TLS secure ch…

【问题处理】银河麒麟操作系统实例分享,理光打印机lpr协议打印问题处理

1.问题环境 系统版本&#xff1a;Kylin-Desktop-V10-SP1-General-Release-xxx-20221120-x86_64 内核版本&#xff1a;linux 5.4.18-44kt-generic 系统版本&#xff1a;麒麟v10 sp1 处理器&#xff1a;kx6640ma 2.问题描述 问题详细描述&#xff1a;用户通过lpr协议去连接…

如何申请Telegram机器人 | 推送通知

一、前言 利用Telegram机器人推送通知&#xff0c;需要在环境变量填入正确的TG_BOT_TOKEN以及TG_USER_ID&#xff0c;以下教程简明阐述如何获取Token以及UserID 二、获取步骤 1、首先在Telegram上搜索BotFather机器人。需要注意的是&#xff0c;搜索结果中选择ID为BotFather…

基于SSM+Jsp+Mysql的图书仓储管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

浅谈TCP(2):流量控制与拥塞控制

上文浅谈TCP&#xff08;1&#xff09;&#xff1a;状态机与重传机制介绍了TCP的状态机与重传机制。本文介绍流量控制&#xff08;Flow Control&#xff0c;简称流控&#xff09;与拥塞控制&#xff08;Congestion Control&#xff09;。TCP依此保障网络的QOS&#xff08;Quali…

Native Instruments Kontakt 7 for Mac v7.9.0 专业音频采样

Native Instruments Kontakt 7是一款强大的软件采样器&#xff0c;它允许用户从各种来源采样音频并进行编辑和处理。它包含大量预设采样库&#xff0c;包括乐器、合成器、鼓组和声音效果等。此外&#xff0c;Kontakt 7还允许用户创建自己的采样库&#xff0c;以便根据自己的需要…

python ---- %r %s格式输出的区别

在python中&#xff0c; % s和 % r是我们常用的格式符&#xff0c;它们的用法基本一致&#xff0c;但作用却不尽相同&#xff0c;下面简要说明一下两者的区别&#xff1a; 1. % s是将对象 / 变量传递到str()方法中&#xff0c;并将其转化为面向用户的可阅读的格式。 2. % r是将…

》shader程序纹理《--带状渐变

》shader程序纹理《--带状渐变 2022-09-29 10:27 带状渐变&#xff0c;ripple粒子材质 评论(0)

redis群集有三种模式

目录 redis群集有三种模式 redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均…

沐风老师3DMAX建筑砖生成器插件安装使用方法教程

3DMAX建筑砖生成器插件安装使用方法教程 3DMAX建筑砖生成器插件&#xff0c;一键生成建筑砖&#xff08;砖墙&#xff09;。旨在通过快速创建建筑砖来帮助建筑设计师简化向场景添加细节的过程。 【适用版本】 3DMax2013 - 2024 &#xff08;不仅限于此范围&#xff09; 【安装…

62、服务攻防——框架安全CVE复现SpringStrutsLaravelThinkphp

文章目录 常见语言开发框架&#xff08;主流&#xff09;&#xff1a; PHP&#xff1a;ThinkPHP、Laravel、YIIJAVA&#xff1a;Spring、SpringbootPython&#xff1a;FlaskJavaScript&#xff1a;Vue.js、Node.js 框架判断()&#xff1a; 通过插件Wappalyzer&#xff08;可能…

Maven 项目之快速选择环境配置文件

Maven项目中&#xff0c;多环境之间如何进行配置文件的切换。在我们开发的过程中&#xff0c;经常会出现开发环境、测试环境、生产环境等之间的切换&#xff0c;如果我们每次都去替换配置文件&#xff0c;就会跟繁琐&#xff0c;这个时候就可以创建多个环境&#xff0c;同时在对…

我的2024java实习投递历程

每天投递一个简历吧&#xff0c;我tm投投投投投投投 3/21 周四 招商银行 招银网络科技 杭州 java实习生 4月2号笔试 笔试经验&#xff1a;45分钟 30道选择题 题目回忆版&#xff1a; 1.8进制 1-777 多少个数各位乘积为0 2.有关系R&#xff08;ABCDE&#xff09;&…

DBU-Net:用于乳腺超声图像中肿瘤分割的双分支U形网络

DBU-Net&#xff1a;用于乳腺超声图像中肿瘤分割的双分支U形网络 摘要引言材料和方法概述所提出的方法 DBU-Net Dual branch U-Net for tumor segmentation in breast ultrasound images 摘要 乳腺超声医学图像通常具有低成像质量沿着不清楚的目标边界。这些问题使得医生在诊断…