#pragma once #include #include #include class ImageTileWidget : public QWidget { Q_OBJECT public: explicit ImageTileWidget(QWidget* parent = nullptr); void setImagePath(const QString& path); void setImage(const QImage& image); QString imagePath() const { return m_path; } void setSelected(bool sel); bool isSelected() const { return m_selected; } void setExpanded(bool expanded); bool isExpanded() const { return m_expanded; } QSize sizeHint() const override; signals: void clicked(); void shrinkRequested(); protected: void paintEvent(QPaintEvent*) override; void mousePressEvent(QMouseEvent*) override; void resizeEvent(QResizeEvent*) override; private: void updateShrinkButtonPosition(); QString getImageInfo() const; QString m_path; QPixmap m_pix; bool m_selected {false}; bool m_expanded {false}; QPushButton* m_shrinkButton {nullptr}; };