#pragma once #include #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 setAlias(const QString& alias) { m_alias = alias; } QString alias() const { return m_alias; } void setSelected(bool sel); bool isSelected() const { return m_selected; } void setExpanded(bool expanded); bool isExpanded() const { return m_expanded; } // 设置图片对齐方式(用于奇偶排交错显示) void setImageAlignment(Qt::Alignment align) { m_imageAlignment = align; update(); } Qt::Alignment imageAlignment() const { return m_imageAlignment; } 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; QString m_alias; // 添加别名字段 QPixmap m_pix; bool m_selected {false}; bool m_expanded {false}; Qt::Alignment m_imageAlignment {Qt::AlignCenter}; // 图片对齐方式,默认居中 QPushButton* m_shrinkButton {nullptr}; };