Полный 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)
};
Код: Выделить всё
#include
class MyGadget {
Q_GADGET
public:
enum MyEnum {
First,
Second,
Third
};
Q_ENUM(MyEnum)
};
Код: Выделить всё
#include
namespace MyNamespace {
Q_NAMESPACE
enum MyEnum {
First,
Second,
Third
};
Q_ENUM_NS(MyEnum)
}
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
Мобильная версия