Как правильно использовать класс перечисления С++ в QML?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как правильно использовать класс перечисления С++ в QML?

Сообщение Anonymous »


У меня есть небольшой проект Qt/QML, в котором я пытаюсь использовать класс перечисления C++.

main.cpp

int main(int argc, char *argv[]) { qmlRegisterUncreatableType("FruitShop", 1, 0, "FruitShop", QStringLiteral("Sume shop")); qRegisterMetaType(); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif Приложение QGuiApplication (argc, argv); Движок QQmlApplicationEngine; shop::Установщик FruitSetter; engine.rootContext()->setContextProperty("_fruitSetter", &setter); ... fruitshop.h

#include магазин пространства имен { класс FruitShop: публичный QObject { Q_OBJECT публика: класс перечисления Фрукты { Апельсин, Яблоко, Груша }; Q_ENUM(Фрукты) явный FruitShop (QObject *parent = nullptr); }; } // магазин пространства имен fruitsetter.h

#include #include "fruitshop.h" магазин пространства имен { класс FruitSetter: публичный QObject { Q_OBJECT публика: явный FruitSetter(QObject *parent = nullptr); Q_INVOKABLE void setFruit(FruitShop::Fruit Fruit); }; } // магазин пространства имен main.qml

импортировать QtQuick 2.15 импортировать QtQuick.Controls 2.15 импортировать QtQuick.Window 2.15 импортировать FruitShop 1.0 Окно { ширина: 640 высота: 480 видно: правда title: qsTr("Привет, мир") Кнопка { якоря.centerIn: родительский текст: «Набор фруктов» onClicked: {_fruitSetter.setFruit(FruitShop.Apple)} } } Если я использую без namespace shop, все ок. Но если я использую код, представленный выше, я получаю ошибку

qrc:/main.qml:16: Ошибка: Неизвестный тип параметра метода: FruitShop::Fruit

Как решить эту проблему?
Ответить

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

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

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

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

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