如何从QML访问枚举

How to access enum from QML?

本文关键字:访问 枚举 QML      更新时间:2023-10-16

我有一个类,它有一个枚举

Q_PROPERTY(Heatercooler*heatercoolerREAD Heatercooler CONSTANT USER true)

 class Heatercooler :  public HardwareComponent
    {
        Q_OBJECT
        Q_ENUMS(HeatTestState)
    public:
        Heatercooler(QObject *parent = 0);
         ~Heatercooler();
        void timerEvent(QTimerEvent *);
        enum HeatTestState
        {
            HEAT_IDLE = 0,
            HEAT_GO_AMBIENT_FOR_HOT,
            HEAT_GO_AMBIENT_FOR_COLD,
            HEAT_GO_AMBIENT_FOR_FINISH,
            HEAT_GO_HOT,
            HEAT_GO_COLD,
            HEAT_FINISH_SUCCESS,
            HEAT_FINISH_ERROR,
            HEAT_LT_COLD,
            HEAT_LT_COLD_Finished,   // lt cold is fifferent from normal cold -> #431
        };
public slots:
      void setState( HeatTestState newstate);
    }

我试图从一个按钮访问它,但它说枚举是未定义的

   Button {
                    text: qsTr("Heater")
                    priority: 1
                    Layout.fillWidth: true
                    onSecureClicked:  hardware.heatercooler.setState(HEAT_GO_AMBIENT_FOR_HOT)
                }

您的枚举在类Heatercooler中,因此您应该编写Heatercooler::HEAT_GO_AMBIENT_FOR_HOT