1、概述
源码放在文章末尾
该项目实现了设备按钮控件,主要包含如下功能:
- 可设置按钮样式 圆形、警察、气泡、气泡2、消息、消息2。
- 可设置按钮颜色 布防、撤防、报警、旁路、故障。
- 可设置报警切换及对应报警切换的颜色。
- 可设置显示的防区号。
- 可设置是否可鼠标拖动。
- 发出单击和双击信号。
下面是demo演示:
项目部分代码如下所示:
#ifndef DEVICEBUTTON_H
#define DEVICEBUTTON_H/*** 设备按钮控件* 1. 可设置按钮样式 圆形、警察、气泡、气泡2、消息、消息2。* 2. 可设置按钮颜色 布防、撤防、报警、旁路、故障。* 3. 可设置报警切换及对应报警切换的颜色。* 4. 可设置显示的防区号。* 5. 可设置是否可鼠标拖动。* 6. 发出单击和双击信号。*/#include <QWidget>#ifdef quc
class Q_DECL_EXPORT DeviceButton : public QWidget
#else
class DeviceButton : public QWidget
#endif{Q_OBJECTQ_ENUMS(ButtonStyle)Q_ENUMS(ButtonColor)Q_PROPERTY(bool canMove READ getCanMove WRITE setCanMove)Q_PROPERTY(QString text READ getText WRITE setText)Q_PROPERTY(QString colorNormal READ getColorNormal WRITE setColorNormal)Q_PROPERTY(QString colorAlarm READ getColorAlarm WRITE setColorAlarm)Q_PROPERTY(ButtonStyle buttonStyle READ getButtonStyle WRITE setButtonStyle)Q_PROPERTY(ButtonColor buttonColor READ getButtonColor WRITE setButtonColor)public://设备按钮样式enum ButtonStyle {ButtonStyle_Circle = 0, //圆形ButtonStyle_Police = 1, //警察ButtonStyle_Bubble = 2, //气泡ButtonStyle_Bubble2 = 3, //气泡2ButtonStyle_Msg = 4, //消息ButtonStyle_Msg2 = 5 //消息2};//设备按钮颜色enum ButtonColor {ButtonColor_Green = 0, //绿色(激活状态)ButtonColor_Blue = 1, //蓝色(在线状态)ButtonColor_Red = 2, //红色(报警状态)ButtonColor_Gray = 3, //灰色(离线状态)ButtonColor_Black = 4, //黑色(故障状态)ButtonColor_Purple = 5, //紫色(其他状态)ButtonColor_Yellow = 6 //黄色(其他状态)};explicit DeviceButton(QWidget *parent = 0);~DeviceButton();protected:void paintEvent(QPaintEvent *);bool eventFilter(QObject *watched, QEvent *event);private:bool canMove; //是否可移动QString text; //显示文字QString colorNormal; //正常颜色QString colorAlarm; //报警颜色ButtonStyle buttonStyle;//按钮样式ButtonColor buttonColor;//按钮颜色bool isPressed; //鼠标是否按下QPoint lastPoint; //鼠标按下最后坐标QString type; //图片末尾类型QString imgPath; //背景图片路径QString imgName; //背景图片名称bool isDark; //是否加深报警QTimer *timer; //报警闪烁定时器private slots:void checkAlarm(); //切换报警状态public://默认尺寸和最小尺寸QSize sizeHint() const;QSize minimumSizeHint() const;//获取和设置可移动bool getCanMove() const;void setCanMove(bool canMove);//获取和设置显示文字QString getText() const;void setText(const QString &text);//获取和设置正常颜色QString getColorNormal() const;void setColorNormal(const QString &colorNormal);//获取和设置报警颜色QString getColorAlarm() const;void setColorAlarm(const QString &colorAlarm);//获取和设置样式ButtonStyle getButtonStyle() const;void setButtonStyle(const ButtonStyle &buttonStyle);//获取和设置颜色ButtonColor getButtonColor() const;void setButtonColor(const ButtonColor &buttonColor);Q_SIGNALS://鼠标单击双击事件void clicked();void doubleClicked();
};#endif //DEVICEBUTTON_H