一、简介
基于Qt实现的图片查看器。支持如下功能:
- 图像放大、缩小、拖动
- 矩形标注框显示,在放大缩小时,标注框的线宽始终保持固定宽度。
二、源码
- ImgViewWidget.hpp
// ImgViewWidget.hpp
#pragma once
#include <QImage>
#include <QPixmap>
#include <QWidget>
class ImgViewWidget final : public QWidget {
Q_OBJECT
public:
// 标注框(矩形区域和描述文字)
using MarkBox = QPair<QRect, QString>;
explicit ImgViewWidget(QWidget* parent = nullptr);
~ImgViewWidget() override = default;
// 设置图像
void set_image(const QImage& img);
void set_pixmap(const QPixmap& img);
// 复位图像(复位缩放和移动)
void reset_transform();
// 清除图像
void clear();
// 设置缩放是否启用(默认启用)
void set_zoom_enable(bool enable);
// 设置标注框显示(默认显示)
void set_mark_visible(bool visible);
// 设置标注框颜色,默认红色
void set_mark_color(const QColor& color);
// 设置标注框
void set_mark_box(const QVector<MarkBox>& marks);
[[nodiscard]] QPixmap original_pix() const;
[[nodiscard]] bool zoom_enable() const;
[[nodiscard]] bool mark_visible() const;
[[nodiscard]] QColor mark_color() const;
[[nodiscard]] const QVector<MarkBox>& mark_box() const;
protected:
void paintEvent(QPaintEvent* event) override;
void wheelEvent(QWheelEvent* event) override;
void mousePressEvent(QMouseEvent*

最低0.47元/天 解锁文章
1301

被折叠的 条评论
为什么被折叠?



