#ifndef BUTTONDEFENCE_H #define BUTTONDEFENCE_H /** * 防区按钮控件 作者:feiyangqingyun(QQ:517216493) 2018-7-2 * 1. 可设置防区样式 圆形、警察、气泡、气泡2、消息、消息2 * 2. 可设置防区状态 布防、撤防、报警、旁路、故障 * 3. 可设置报警切换 * 4. 可设置显示的防区号 * 5. 可设置是否可鼠标拖动 * 6. 发出单击和双击信号 */ #include #ifdef quc class Q_DECL_EXPORT ButtonDefence : public QWidget #else class ButtonDefence : public QWidget #endif { Q_OBJECT Q_ENUMS(ButtonStyle) Q_ENUMS(ButtonStatus) Q_PROPERTY(bool canMove READ getCanMove WRITE setCanMove) Q_PROPERTY(QString text READ getText WRITE setText) Q_PROPERTY(ButtonStyle buttonStyle READ getButtonStyle WRITE setButtonStyle) Q_PROPERTY(ButtonStatus buttonStatus READ getButtonStatus WRITE setButtonStatus) public: //防区样式 圆形、警察、气泡、气泡2、消息、消息2 enum ButtonStyle { ButtonStyle_Circle = 0, ButtonStyle_Police = 1, ButtonStyle_Bubble = 2, ButtonStyle_Bubble2 = 3, ButtonStyle_Msg = 4, ButtonStyle_Msg2 = 5 }; //防区状态 布防、撤防、报警、旁路、故障 enum ButtonStatus { ButtonStatus_Arming = 0, ButtonStatus_Disarming = 1, ButtonStatus_Alarm = 2, ButtonStatus_Bypass = 3, ButtonStatus_Error = 4 }; explicit ButtonDefence(QWidget *parent = 0); ~ButtonDefence(); protected: void paintEvent(QPaintEvent *); bool eventFilter(QObject *watched, QEvent *event); private: bool canMove; //是否可移动 QString text; //显示文字 ButtonStyle buttonStyle; //防区样式 ButtonStatus buttonStatus; //防区状态 QString type; //图片末尾类型 QString imgName; //背景图片名称 bool isDark; //是否加深报警 QTimer *timer; //报警闪烁定时器 private slots: void checkAlarm(); public: bool getCanMove() const; QString getText() const; ButtonStyle getButtonStyle() const; ButtonStatus getButtonStatus() const; QSize sizeHint() const; QSize minimumSizeHint() const; public Q_SLOTS: //设置可移动 void setCanMove(bool canMove); //设置显示文字 void setText(const QString &text); //设置防区样式 void setButtonStyle(const ButtonStyle &buttonStyle); //设置防区状态 void setButtonStatus(const ButtonStatus &buttonStatus); Q_SIGNALS: void clicked(); void doubleClicked(); }; #endif //BUTTONDEFENCE_H