Использование C++ enum в qml

У меня есть enum что я использую в qml

class SettingManager : public QObject
{
    Q_OBJECT
public:
    enum BookKinds{
         BookKind1=0,
         BookKind2=1,
     };
     Q_ENUMS(BookKinds)
     Q_PROPERTY(BookKinds bookKind READ bookKind WRITE setBookKind NOTIFY bookKindChanged)

     explicit SettingManager(QObject *parent = nullptr);
     void setBookKind(BookKinds dkob);
     BookKinds bookKind();
  signals:
    void bookKindChanged();
};

в main.cpp Я зарегистрировался SettingManager

qmlRegisterType<SettingManager>("Test",1,0,"SettingManager");

Я использую это в файле qml

  onCurrentIndexChanged:
    {
        if(tbarBookKindForDisplay.currentIndex==0)
        {
           settingManager.bookKind=BookManager.BookKind1;
        }
        else if(tbarBookKindForDisplay.currentIndex==1){
            settingManager.bookKind=BookManager.BookKind2;
         }           
    }

когда CurrentIndex из TabBar изменения ниже ошибки происходит:

Ошибка: невозможно назначить [undefined] для int

1 ответ

Решение

Вы регистрируете тип как SettingManager но используйте это как BookManager, Правильный код:

settingManager.bookKind = SettingManager.BookKind1;

Вы также должны использовать Q_ENUM вместоQ_ENUMS,

Другие вопросы по тегам