Использование 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
,