/** * @RDE_HEADER@ * A Button with an elliptic Pixmap and a menu icon when hovering. In the style of LtsStyle. * $Id$ * $HeadURL$ * $Author$ * * Created by Mike Wille, SLSE, 2016-06-20 */ #pragma once #include "lts_widgets_export.h" #include namespace LtsWidgets { /** * @brief The LtsProfileButton class provides a Button which has a round form, containing a picture. On hovering the picture turns into * a "menu" icon to symbolize the clickability of the button. * If no pixmap / picture is set, the picture-layer is button colored. */ class LTSWIDGETS_EXPORT LtsProfileButton : public QWidget { Q_OBJECT Q_PROPERTY( QPixmap pixMap READ pixmap WRITE setPixmap ) Q_PROPERTY( bool menuEnabled READ menuEnabled WRITE setMenuEnabled ) public: explicit LtsProfileButton(QWidget *parent = nullptr); /** * @brief setPixmap sets the picture of this button. If no pixmap / picture is set, the picture-layer is button colored. * @param pixmap The picture to draw on the button. */ void setPixmap(const QPixmap &pixmap); const QPixmap &pixmap() const { return m_pixmap; } /** * @brief setMenuEnabled changes the hover & click behaviour. If the menu is enabled, the profile button indicates a menu on hovering, and by clicking it, the signal 'signalClicked' is emitted (menu is enabled by default) * @param enabled true if menu is enabled, false if not */ void setMenuEnabled(bool enabled = true) { m_menuEnabled = enabled; } bool menuEnabled() const { return m_menuEnabled; } protected: void paintEvent(QPaintEvent *event); void enterEvent(QEvent *event); void leaveEvent(QEvent *event); bool event(QEvent *event); private: QPixmap m_pixmap; bool m_isHovered; bool m_menuEnabled; signals: /** * @brief signalClicked is emitted when the button has been clicked. */ void signalClicked(); }; }