Как выставить enum на QML из не QBject в C ++ (QT 6.2+)C++

Программы на C++. Форум разработчиков
Anonymous
Как выставить enum на QML из не QBject в C ++ (QT 6.2+)

Сообщение Anonymous »

Я хочу разоблачить перечисление в QML из C ++, не создавая Qubject, но он не работает для меня. Есть идеи? Я также пытался использовать пространство имен с помощью Q_NAMESPACE () и Q_ENUM_NS () . В обоих случаях перечисление не распознается QML.
Полный QBject QML_ELEME Пример

Код: Выделить всё

#include 
#include 

class MyFullQObject : public QObject {
Q_OBJECT
QML_ELEMENT
public:
using QObject::QObject;

enum MyEnum {
First,
Second,
Third
};
Q_ENUM(MyEnum)
};
q_gadget Пример

Код: Выделить всё

#include 

class MyGadget {
Q_GADGET
public:
enum MyEnum {
First,
Second,
Third
};
Q_ENUM(MyEnum)
};
q_namespace Пример

Код: Выделить всё

#include 

namespace MyNamespace {

Q_NAMESPACE

enum MyEnum {
First,
Second,
Third
};
Q_ENUM_NS(MyEnum)

}
Использование в qml
import QtQuick
import MyModule

Item {
Component.onCompleted: {
console.log("MyFullQObject enum: " + MyFullQObject.First)
console.log("MyGadget enum: " + MyGadget.First)
console.log("MyNamespace enum: " + MyNamespace.First)
}
}
< /code>
В QML будет работать первая консольная линия. Второй генерирует ошибку «Ссылкаерр: Mygadget не определен». Аналогично для третьего (если второй прокомментирован, чтобы позволить программе продолжаться).
В Cmake, как классы, так и пространство имен включены в один и тот же модуль Cmake, и я связываю сгенерированный mymoduleLibplugin с исполняемым, который успешно делает его доступным для QML .>

Подробнее здесь: https://stackoverflow.com/questions/764 ... n-c-qt-6-2

Вернуться в «C++»