2

我有一个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

4

1 回答 1

4

您将类型注册为SettingManager但将其用作BookManager. 正确的代码是:

settingManager.bookKind = SettingManager.BookKind1;

您还应该使用Q_ENUM而不是Q_ENUMS.

于 2018-03-16T08:58:45.710 回答