#ifndef STATEWIDGET_H #define STATEWIDGET_H #include #include #include "QMouseEvent" #include "QDebug" #include "QAction" #include "QMenu" #include "QColor" #include "QLabel" #include "mavlink.h" #include "QStyle" #include "QDebug" #include "QScreen" #include #include "QLabel" #include "QProgressBar" #include #include "QFont" class StateWidget :public QWidget { Q_OBJECT public: enum state{ green = 0, red = 1, orange = 2, gray = 3, }; explicit StateWidget(int flag, int index = 0,bool is_use_line = false, QWidget *parent = nullptr); explicit StateWidget(int flag, QString t, QVariant v = 0, state s = state::gray, int index = 0, bool is_use_line = false, QWidget *parent = nullptr); ~StateWidget(); int id; void setMax(double v) { max = v; } void setMin(double v) { min = v; } signals: public slots: int ID(void) { return id; } QString Name(void) { return title->text(); } int offset(void) { return m_offset; } void setStats(QMap l); QMap Stats(void) { return stateMap; } void setColor(state s); void setValue(QString s); void setRange(double m_min,double m_max); protected: //鼠标按下事件处理函数 void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void enterEvent(QEvent * event); void leaveEvent(QEvent *event); private slots: private: /** * @brief 根据改变的值设置线的长度 * @param value 舵机反馈值 */ void setLineValue(double value); int w = 300; int h = 20; int m_offset = 2; double max = 99999999999999999; double min = -99999999999999999; bool _is_use_line; //是否使用数值线 double m_max = 0; double m_min = 0; QWidget value_line; //数值线 QGridLayout *gridlayout; QLabel *title = nullptr; QLabel *label = nullptr; QProgressBar *bar = nullptr; QMap stateMap; bool type = 0; }; #endif // STATEWIDGET_H