File indexing completed on 2024-05-19 04:29:52
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2023 Halla Rempt <halla@valdyas.org> 0003 * SPDX-FileCopyrightText: 2023 Alvin Wong <alvin@alvinhc.com> 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #ifndef KISCLICKABLELABEL_H 0007 #define KISCLICKABLELABEL_H 0008 0009 #include <QPixmap> 0010 #include <QLabel> 0011 #include <QObject> 0012 #include <QWidget> 0013 #include <QPushButton> 0014 0015 #include <kritawidgetutils_export.h> 0016 0017 class KRITAWIDGETUTILS_EXPORT KisClickableLabel : public QLabel 0018 { 0019 Q_OBJECT 0020 public: 0021 0022 explicit KisClickableLabel(QWidget *parent = nullptr); 0023 ~KisClickableLabel() override; 0024 0025 bool hasHeightForWidth() const override; 0026 int heightForWidth(int w) const override; 0027 QSize minimumSizeHint() const override; 0028 QSize sizeHint() const override; 0029 0030 void setUnscaledPixmap(QPixmap pixmap); 0031 void updatePixmap(); 0032 0033 void setDismissable(bool value = true); 0034 bool isDismissable(); 0035 0036 Q_SIGNALS: 0037 void clicked(); 0038 void dismissed(); 0039 0040 protected: 0041 void mousePressEvent(QMouseEvent* event) override; 0042 void resizeEvent(QResizeEvent *event) override; 0043 0044 private: 0045 QPixmap m_pixmap; 0046 0047 bool m_dismissable = false; 0048 QPushButton *m_closeButton; 0049 }; 0050 0051 #endif // KISCLICKABLELABEL_H