如何将Qt内置枚举公开给QML
How to expose Qt built-in enums to QML?
我正在使用返回QNetworkReply::NetworkError
的方法编写一个C++类。我想在 QML 中使用此枚举,而不仅仅是将其视为整数,以便我可以执行以下操作:
if (myObject.error() == NetworkError.OperationCanceledError) {
而不是
if (myObject.error() == 5) {
您
需要做的就是:
在主要:
qmlRegisterUncreatableType<QNetworkReply>("someimport", 1, 0, "QNetworkReply", "none");
然后在 QML 中:
import someimport 1.0
...
if (myObject.error() == QNetworkReply.OperationCanceledError) {
QNetworkReply 已经包含Q_ENUM和Q_DECLARE_METATYPE宏,所以剩下的就是将其导出到 QML
一般来说,你只需要使用 Q_ENUM 宏向 QML 公开枚举,但我认为你还需要使用 qmlRegisterType 注册相关的类类型。
所以如果你做类似的事情
Q_ENUM(NetworkError) // in myclass.h
qmlRegisterType<App>("com.myapp.classes", 1, 0, "MyClass"); // in myclass.cpp
您应该能够通过以下方式访问 QML 中的枚举:
import com.myapp.classes 1.0
if (myObject.error() == MyClass.OperationCanceledError) { ... }
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 枚举类'classname'的多重定义
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 在 qml 中使用 Q_ENUM 和 Q_PROPERTY 作为枚举类
- 当在基类中定义枚举时,qml中的Q_ENUM未定义值
- 如何将Qt内置枚举公开给QML
- 如何将枚举类传递给QML
- 如何将枚举的Qlist从C 曝光到QML
- 在 QML 中使用 c++ 枚举作为字符串
- 如何将枚举类传递给 QML
- 枚举类型作为QML的C++类中的属性类型
- 如何从QML访问枚举
- 在Qt c++中枚举QML属性
- 在QML信号中公开枚举