GrabBag/AppUtils/UICommon/Inc/DialogImageViewer.h

57 lines
1.4 KiB
C
Raw Normal View History

2025-12-27 09:34:02 +08:00
#ifndef DIALOGIMAGEVIEWER_H
#define DIALOGIMAGEVIEWER_H
#include <QDialog>
#include <QImage>
#include <QLabel>
#include <QScrollArea>
#include <QWheelEvent>
/**
* @brief
*
*/
class DialogImageViewer : public QDialog
{
Q_OBJECT
public:
explicit DialogImageViewer(QWidget* parent = nullptr);
~DialogImageViewer();
/**
* @brief
* @param image
* @param title
*/
void setImage(const QImage& image, const QString& title = "");
protected:
void wheelEvent(QWheelEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
void mouseMoveEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void mouseDoubleClickEvent(QMouseEvent* event) override;
void keyPressEvent(QKeyEvent* event) override;
private:
void setupUI();
void updateImageDisplay();
void resetZoom();
private:
QScrollArea* m_scrollArea = nullptr;
QLabel* m_imageLabel = nullptr;
QLabel* m_infoLabel = nullptr;
QImage m_originalImage;
double m_scaleFactor = 1.0;
bool m_dragging = false;
QPoint m_lastPos;
static constexpr double MIN_SCALE = 0.1;
static constexpr double MAX_SCALE = 10.0;
static constexpr double SCALE_STEP = 0.1;
};
#endif // DIALOGIMAGEVIEWER_H