Qt:5.10新特性,在QML中定义枚举
2018-01-07 22:36
2161 查看
Qt在5.5开始,支持在C++中定义一个枚举。
采用Q_ENUM关键字,注册自定义的枚举到元对象系统中,供QML使用。
这,说实话,非常麻烦,非常麻烦,非常麻烦
嗯,麻烦的事情要说3次。
以至于长期以来,在不想涉及太多C++的情况下,我自己开发QML程序都是用字符串做枚举,比如说“XxxStyle”
这个问题,终于在5.10解决了。5.10中允许在QML中自定义枚举值,方式如下:
MyRectangle.qml
这里我自定义了一个枚举,名字是Style,里面有3个属性,分别是RedStyle、GreenStyle和BlueStyle
同时有个currentStyle来接收枚举值
使用的话,要遵守
最后这个MyRectangle可以这样使用:
总体来说,比以前C++注册,然后在QML使用的方法,方便了很多很多。但是!!我必须要吐槽一点,5.10自带的QtCreator竟然不能正确识别enum关键字,导致整个QML文件内都无法正常高亮。只能等后面版本能够改进了。
采用Q_ENUM关键字,注册自定义的枚举到元对象系统中,供QML使用。
这,说实话,非常麻烦,非常麻烦,非常麻烦
嗯,麻烦的事情要说3次。
以至于长期以来,在不想涉及太多C++的情况下,我自己开发QML程序都是用字符串做枚举,比如说“XxxStyle”
这个问题,终于在5.10解决了。5.10中允许在QML中自定义枚举值,方式如下:
MyRectangle.qml
import QtQuick 2.10 Rectangle { id: myRectangle width: 100 height: 100 color: { switch ( currentStyle ) { case MyRectangle.Style.RedStyle: return "#ff0000"; case MyRectangle.Style.GreenStyle: return "#00ff00"; case MyRectangle.Style.BlueStyle: return "#0000ff"; default: return "#00000000"; } } enum Style { RedStyle, GreenStyle, BlueStyle } property int currentStyle: MyRectangle.Style.RedStyle }
这里我自定义了一个枚举,名字是Style,里面有3个属性,分别是RedStyle、GreenStyle和BlueStyle
同时有个currentStyle来接收枚举值
使用的话,要遵守
QML文件名.枚举类型名.枚举值名的规则来使用,无论是在当前QML内还是外部。
最后这个MyRectangle可以这样使用:
MyRectangle { currentStyle: MyRectangle.Style.GreenStyle }
总体来说,比以前C++注册,然后在QML使用的方法,方便了很多很多。但是!!我必须要吐槽一点,5.10自带的QtCreator竟然不能正确识别enum关键字,导致整个QML文件内都无法正常高亮。只能等后面版本能够改进了。
相关文章推荐
- C#特性学习与使用(为枚举定义Description)
- Qt开发环境下QML调用已定义的C++类(以导出文件功能为例)
- C#特性学习与使用(为枚举定义Description)
- (转)C#特性学习与使用(为枚举定义Description)
- Qt 5.10 QML 文件 error: Expected token ";" 问题
- Qt QML 入门 — 使用C++定义QML类型
- C#特性学习与使用(为枚举定义Description)
- Qt与QML的枚举绑定(C++枚举)
- Qt实例分析——C++定义的类创建为供QML使用的插件
- 枚举变量的定义
- QT5.10开发(1)Win10 安装 QT Creater
- RS232串口通信详解(引脚定义,电气特性,传输格式,接收过程,单片机晶振,RS485,RS422)
- JDK1.5新特性:静态导入、可变参数、增强for循环、自动装箱拆箱(享元设计模式)、枚举、注解、泛型、
- 性能特性测试系列1——STL容器,QT容器性能相关比较和总结
- C++11新特性总结(枚举+继承+左右值引用+变长模板)
- Qt-QML-安卓编译问题
- [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题和支持HtmlHelper
- Qt中定义可点击标签
- QML 中的 Qt.include
- Qt QML信号解析