ENUM 应该通过使用类名引用它来使用,例如 StatusClass.Ready 。如果在 QML 中也使用相同的类作为上下文属性…… // main.cpp ... QQmlApplicationEngine engine; qmlRegisterUncreatableType<StatusClass>("qml.guide", 1, 0, "StatusClass", "Not creatable as it is an enum type."); StatusClass statusC...
clanguage.h #ifndef CLANGUUAGE_H#defineCLANGUUAGE_H#include<QObject>#include<QTranslator>#include<QtQml>#include<QQmlEngine>#include<QDebug>#include<QCoreApplication>#include<QQmlApplicationEngine>#include<QString>classCLanguuage :publicQObject { Q_OBJECTpublic: typedefenum{ LANGUAGE_CH, LANGUAG...
要将自定义枚举用作数据类型,必须注册其类,并且还必须使用Q_ENUM()声明枚举,以将其注册到Qt的元对象系统。 话不多说,直接上代码: 首先我们定义一个类,继承于 QObject,然后在类中定义一个枚举类型 #include <QObject> class Message : public QObject { Q_OBJECT Q_PROPERTY(Status status READ getStatus WR...
qml枚举类型enum用法 QML枚举类型(Enum)用法 在QML中,枚举类型(Enum)是一种用于定义一组相关常量的便捷方式。它可以帮助开发者在QML代码中更加清晰地表示特定值的可能性。 使用枚举类型可以提高代码的可读性和可维护性,因为它使开发者能够使用具有描述性名称的符号来代替原始的数字或字符串常量。 下面是一个示例,...
enum Roles//qml用来识别别名的规则 { valueRole = Qt::UserRole + 1, nodeNameRole, nodeTypeRole, tableNameRole, fieldNameRole, moduleRole, locationRole, rectRadiusRole }; void addModel(const ParaModel &deviceList);//C++设置值 void update(int index, const ParaModel ¶Model);//C++更新 ...
(1)从QObject或QObject的派⽣类继承 (2)使⽤Q_OBJECT宏 (3)Q_INVOKABLE宏 在定义⼀个类的成员函数时使⽤Q_INVOKABLE宏来修饰,就可以让该⽅法被元对象系统调⽤,这个宏必须放在返回类型前⾯ (4)Q_ENUMS宏 如果要导出的类定义了想在QML中使⽤的枚举类型,可以使⽤Q_ENUM宏...
Q_ENUMS 假设你要导出的类定义了想在 QML 中使用枚举类型,能够使用 Q_ENUMS 宏将该枚举注冊到元对象系统中。 ColorMaker 类定义了 GenerateAlgorithm 枚举类型,支持 RandomRGB / RandomRed 等颜色生成算法。如今 ColorMaker 类的声明变成了这个样子:
class Model : public QObject { Q_OBJECT Q_ENUMS(Color) public: enum Color { Red, Green, Blue }; qmlRegisterUncreatableType("MyModel", 1, 0, "Warining: Single Object"); 使用 import MyModel 1.0 Item { Component.onCompleted: console.log(Model.Red) }...
QML访问C++有两个⽅法:⼀是在Qt元对象系统中注册C++类,在QML中实例化、访问。⼆是在C++中实例化并设置为QML上下⽂属性,在QML中直接使⽤。与后者相⽐,前者可以使C++类在QML中作为⼀个数据类型,例如函数参数类型或属性类型,也可以使⽤其枚举类型、单例等,功能更强⼤。3、如何实现可以被QML...
ctxt->setContextProperty("obj", &myObj); view.setSource(QUrl("main.qml")); returnapp.exec(); } View已经实现了对engine的封装。如果我们需要在QML中调用C++对象的话,只需要使用setContextProperty(). View和Context提供了QML运行环境。setContextProperty相当于把C++对象在这个Context中注册,QML中只需要使用...