Как выставить 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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