#ifndef QT_ICON_STATE_BUTTON_H #define QT_ICON_STATE_BUTTON_H #include #include "FilePath.h" class QtIconStateButton: public QPushButton { Q_OBJECT public: enum ButtonState { STATE_DEFAULT, STATE_HOVERED, STATE_DISABLED }; struct State { FilePath iconPath; QColor color; }; QtIconStateButton(QWidget* parent = nullptr); void addState(ButtonState buttonState, const FilePath& iconPath, QColor color = Qt::transparent); void hoverIn(); void hoverOut(); signals: void hoveredIn(QPushButton*); void hoveredOut(QPushButton*); protected: void changeEvent(QEvent* event); void enterEvent(QEvent* event); void leaveEvent(QEvent* event); private: void setState(State state); std::map m_states; }; #endif // QT_ICON_STATE_BUTTON_H