如何在QML中使用其他类枚举属性

发布于 2025-02-11 17:23:54 字数 926 浏览 1 评论 0原文

给定的是一个包含枚举的类classa

class ClassA : public QObject
{
    Q_OBJECT
    QML_ELEMENT
    
public:
    enum EnumClassA {
    };
    Q_ENUM(EnumClassA)
    
};

第二类具有classa :: enumclassa的属性:

#include <ClassA.h>
class ClassB : public QObject
{
    Q_OBJECT
    QML_ELEMENT
    
    Q_PROPERTY(ClassA::EnumClassA value READ ...)
public:
    
};

这在qml中起作用(含义value 可以在QML中使用),但是当使用QMLINT/QMLSC编译器时,显示了以下消息:

error: Could not compile binding for value: Cannot generate efficient code for content pointer of non-QVariant wrapper type double of ClassB::value with type ClassA::EnumClassA

肮脏的修复程序可能是这样:

// replace "Q_PROPERTY(ClassA::EnumClassA value READ ...)" with:
Q_PROPERTY(int value READ ...)

但是将类型保留在属性中会更好。

是否可以修改枚举以便可以编译?

问候,

Given is a class ClassA which contains an enum:

class ClassA : public QObject
{
    Q_OBJECT
    QML_ELEMENT
    
public:
    enum EnumClassA {
    };
    Q_ENUM(EnumClassA)
    
};

A second class has a property of ClassA::EnumClassA:

#include <ClassA.h>
class ClassB : public QObject
{
    Q_OBJECT
    QML_ELEMENT
    
    Q_PROPERTY(ClassA::EnumClassA value READ ...)
public:
    
};

This works in Qml (meaning the property value can be used in Qml), but when using qmlint/qmlsc compiler the following message is shown:

error: Could not compile binding for value: Cannot generate efficient code for content pointer of non-QVariant wrapper type double of ClassB::value with type ClassA::EnumClassA

A dirty fix could be this:

// replace "Q_PROPERTY(ClassA::EnumClassA value READ ...)" with:
Q_PROPERTY(int value READ ...)

but it would be much nicer to keep the type in the property.

Is it possible to modify the enum so that it can be compiled?

Regards,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文