当前位置: 首页 > news >正文

asp转换手机网站网页素材下载

asp转换手机网站,网页素材下载,单页网站模板安装,dw做的网站有缝怎么办Qt Demo(3) 之 deepseek 帮我写的关于图像显示的小界面 一个完整的图像浏览器实现,支持缩放、拖拽和坐标显示功能。实现提供了一个功能完整、界面美观的图像浏览器,展示了 QGraphicsView、QGraphicsScene 和 QGraphicsPixmapItem 的核心功能和使用方法。…

Qt Demo(3) 之 deepseek 帮我写的关于图像显示的小界面

  • 一个完整的图像浏览器实现,支持缩放、拖拽和坐标显示功能。
  • 实现提供了一个功能完整、界面美观的图像浏览器,展示了 QGraphicsView、QGraphicsScene 和 QGraphicsPixmapItem 的核心功能和使用方法。
  • 界面如下图所示:

在这里插入图片描述

界面功能介绍

在这里插入图片描述

  • 关键实现细节

在这里插入图片描述

具体实现代码

  • imageviewer.h
#ifndef IMAGEVIEWER_H
#define IMAGEVIEWER_H#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QWheelEvent>
#include <QMouseEvent>
#include <QPointF>class ImageViewer : public QGraphicsView
{Q_OBJECTpublic:explicit ImageViewer(QWidget* parent = nullptr);// 图像操作bool loadImage(const QString& fileName);void setImage(QImage& qimage);void clearImage();// 视图操作void zoomIn();void zoomOut();void resetView();void fitToWindow();// 获取当前状态bool hasImage() const;double scaleFactor() const;signals:// 坐标变化信号void mousePositionChanged(const QPointF& scenePos);protected:// 事件处理void wheelEvent(QWheelEvent* event) override;void mousePressEvent(QMouseEvent* event) override;void mouseMoveEvent(QMouseEvent* event) override;void mouseReleaseEvent(QMouseEvent* event) override;private:// 初始化设置void setupView();// 缩放控制void scaleView(double factor);// 成员变量QGraphicsScene* scene;QGraphicsPixmapItem* pixmapItem;double currentScale;bool isDragging;QPoint lastDragPos;
};#endif // IMAGEVIEWER_H
  • imageviewer.cpp
#include "imageviewer.h"
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QWheelEvent>
#include <QMouseEvent>
#include <QFileDialog>
#include <QMessageBox>
#include <QScrollBar>
#include <QtMath>ImageViewer::ImageViewer(QWidget* parent): QGraphicsView(parent), scene(nullptr), pixmapItem(nullptr),currentScale(1.0), isDragging(false)
{// 创建场景scene = new QGraphicsScene(this);setScene(scene);// 设置视图属性setupView();
}void ImageViewer::setupView()
{// 设置渲染提示setRenderHint(QPainter::Antialiasing, true);setRenderHint(QPainter::SmoothPixmapTransform, true);setRenderHint(QPainter::TextAntialiasing, true);// 设置视图属性setDragMode(QGraphicsView::ScrollHandDrag);setTransformationAnchor(QGraphicsView::AnchorUnderMouse);setResizeAnchor(QGraphicsView::AnchorUnderMouse);setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);setFrameShape(QFrame::NoFrame);// 设置背景setBackgroundBrush(QBrush(QColor(50, 50, 50)));
}bool ImageViewer::loadImage(const QString& fileName)
{// 加载图像QPixmap pixmap(fileName);if (pixmap.isNull()) {return false;}// 清除现有内容clearImage();// 创建新的图像项pixmapItem = scene->addPixmap(pixmap);scene->setSceneRect(pixmap.rect());// 重置视图resetView();return true;
}void ImageViewer::setImage(QImage& qimage)
{// 清除现有内容clearImage();QPixmap pixmap = QPixmap::fromImage(qimage);// 创建新的图像项pixmapItem = scene->addPixmap(pixmap);scene->setSceneRect(pixmap.rect());// 重置视图resetView();
}void ImageViewer::clearImage()
{// 清除场景scene->clear();pixmapItem = nullptr;currentScale = 1.0;
}void ImageViewer::zoomIn()
{scaleView(1.2);
}void ImageViewer::zoomOut()
{scaleView(1.0 / 1.2);
}void ImageViewer::resetView()
{// 重置变换//resetTransform();fitToWindow();currentScale = 1.0;// 如果存在图像,居中显示if (pixmapItem) {centerOn(pixmapItem);}
}void ImageViewer::fitToWindow()
{if (pixmapItem) {// 适应窗口大小fitInView(scene->sceneRect(), Qt::KeepAspectRatio);// 更新当前缩放比例QTransform transform = this->transform();currentScale = transform.m11();}
}bool ImageViewer::hasImage() const
{return pixmapItem != nullptr;
}double ImageViewer::scaleFactor() const
{return currentScale;
}void ImageViewer::scaleView(double factor)
{// 应用缩放scale(factor, factor);currentScale *= factor;
}void ImageViewer::wheelEvent(QWheelEvent* event)
{if (pixmapItem) {// 计算缩放因子double factor = qPow(1.2, event->angleDelta().y() / 240.0);scaleView(factor);event->accept();}else {QGraphicsView::wheelEvent(event);}
}void ImageViewer::mousePressEvent(QMouseEvent* event)
{if (event->button() == Qt::LeftButton && pixmapItem) {// 开始拖拽setCursor(Qt::ClosedHandCursor);lastDragPos = event->pos();isDragging = true;event->accept();}else {QGraphicsView::mousePressEvent(event);}
}void ImageViewer::mouseMoveEvent(QMouseEvent* event)
{if (pixmapItem) {// 获取场景坐标QPointF scenePos = mapToScene(event->pos());// 发射坐标变化信号emit mousePositionChanged(scenePos);// 处理拖拽if (isDragging && (event->buttons() & Qt::LeftButton)) {// 计算移动距离QPoint delta = event->pos() - lastDragPos;lastDragPos = event->pos();// 移动滚动条horizontalScrollBar()->setValue(horizontalScrollBar()->value() - delta.x());verticalScrollBar()->setValue(verticalScrollBar()->value() - delta.y());event->accept();}else {QGraphicsView::mouseMoveEvent(event);}}else {QGraphicsView::mouseMoveEvent(event);}
}void ImageViewer::mouseReleaseEvent(QMouseEvent* event)
{if (event->button() == Qt::LeftButton && isDragging) {// 结束拖拽setCursor(Qt::ArrowCursor);isDragging = false;event->accept();}else {QGraphicsView::mouseReleaseEvent(event);}
}
  • mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStatusBar>
#include <QLabel>
#include "imageviewer.h"class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget* parent = nullptr);~MainWindow();private slots:void openImage();void updateStatusBar(const QPointF& scenePos);private:void setupUI();void setupConnections();ImageViewer* imageViewer;  //图像显示QStatusBar* statusBar;    //状态栏QLabel* coordLabel;     //显示坐标QLabel* scaleLabel;     //显示缩放尺度// 工具栏动作QAction* openAction;      //打开图像QAction* zoomInAction;    //缩小QAction* zoomOutAction;   //放大QAction* resetViewAction; //恢复视野QAction* fitToWindowAction;   //适应窗口大小
};#endif // MAINWINDOW_H
  • mainwindow.cpp
#include "mainwindow.h"
#include <QToolBar>
#include <QFileDialog>
#include <QMessageBox>MainWindow::MainWindow(QWidget* parent): QMainWindow(parent)
{setupUI();setupConnections();setWindowTitle("Image Browser");resize(1000, 700);
}MainWindow::~MainWindow()
{
}void MainWindow::setupUI()
{// 创建图像查看器imageViewer = new ImageViewer(this);setCentralWidget(imageViewer);// 创建状态栏statusBar = new QStatusBar();setStatusBar(statusBar);coordLabel = new QLabel("Coordinates: (0, 0)");scaleLabel = new QLabel("Scale: 100%");statusBar->addPermanentWidget(coordLabel);statusBar->addPermanentWidget(scaleLabel);// 创建工具栏QToolBar* toolBar = new QToolBar("Main Toolbar");addToolBar(Qt::TopToolBarArea, toolBar);// 创建动作openAction = new QAction("Open", this);zoomInAction = new QAction("Zoom In", this);zoomOutAction = new QAction("Zoom Out", this);resetViewAction = new QAction("Reset View", this);fitToWindowAction = new QAction("Fit to Window", this);// 添加到工具栏toolBar->addAction(openAction);toolBar->addAction(zoomInAction);toolBar->addAction(zoomOutAction);toolBar->addAction(resetViewAction);toolBar->addAction(fitToWindowAction);// 设置样式setStyleSheet(R"(QMainWindow {background-color: #2b2b2b;}QToolBar {background-color: #3c3c3c;color: #ffffff;border: none;spacing: 3px;padding: 3px;}QToolButton {background-color: #4c4c4c;color: #ffffff;border: 1px solid #5c5c5c;border-radius: 3px;padding: 5px;}QToolButton:hover {background-color: #5c5c5c;}QStatusBar {background-color: #3c3c3c;color: #ffffff;}QLabel {color: #ffffff;})");
}void MainWindow::setupConnections()
{connect(openAction, &QAction::triggered, this, &MainWindow::openImage);connect(zoomInAction, &QAction::triggered, imageViewer, &ImageViewer::zoomIn);connect(zoomOutAction, &QAction::triggered, imageViewer, &ImageViewer::zoomOut);connect(resetViewAction, &QAction::triggered, imageViewer, &ImageViewer::resetView);connect(fitToWindowAction, &QAction::triggered, imageViewer, &ImageViewer::fitToWindow);connect(imageViewer, &ImageViewer::mousePositionChanged, this, &MainWindow::updateStatusBar);
}void MainWindow::openImage()
{QString fileName = QFileDialog::getOpenFileName(this,"Open Image", "", "Image Files (*.png *.jpg *.jpeg *.bmp *.tif)");if (!fileName.isEmpty()){// 加载图像QImage qimage(fileName);if (qimage.isNull()) {QMessageBox::warning(this, "Error", "Cannot load image file.");}else {imageViewer->setImage(qimage);}/* if (!imageViewer->loadImage(fileName)) {QMessageBox::warning(this, "Error", "Cannot load image file.");}*/}
}void MainWindow::updateStatusBar(const QPointF& scenePos)
{// 更新坐标显示coordLabel->setText(QString("Coordinates: (%1, %2)").arg(scenePos.x()).arg(scenePos.y()));// 更新缩放比例显示int scalePercent = static_cast<int>(imageViewer->scaleFactor() * 100);scaleLabel->setText(QString("Scale: %1%").arg(scalePercent));
}
  • main.cpp
#include "mainwindow.h"
#include <QApplication>int main(int argc, char* argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
http://www.dtcms.com/a/463104.html

相关文章:

  • 微网站建设正规公司招工网站58同城
  • 企业大型网站开发网站模板设计大岭山建设网站
  • 帝国cms做网站辽宁城乡建设集团成立网站
  • ajaxjsp网站开发从入门到精通销售客户管理软件哪个好
  • 网站的速度品牌策划招聘
  • 第一步:基于node创建一个Nest.js项目
  • wordpress template hierarchyseo平台有哪些
  • 做外贸网站建设南昌网站排名优化报
  • 冲刺校招 打卡 day04
  • mysql数据库学习之SQL优化(八)
  • 超越CNN和Transformer!Mamba结合多模态统领图像任务!
  • 开发网站那个好珠海网站制作策划
  • shtml怎么做网站为什么进不了中国建设银行网站
  • 2017 如何做网站优化wordpress实现预览
  • 02-Media-12-virtual_wbc_rtsp.py 随机位置、颜色和大小显示文本内容并同时进行RTSP推流的示例程序
  • getapp影视APP源码 反编译APP附教程
  • 营销型网站建设微博徐州市工程招标网
  • 网站 制作价格google官网下载
  • Mysql初阶第四讲:Mysql表的约束
  • 企业网站设计好的缺点有哪些餐饮管理和营销方案
  • 怎么样提高网站排名设计衣服网站
  • 查询网站这么做asp个人网站模板下载
  • 做网站用windows还是linux做我的世界壁纸的网站
  • 用 BP 神经网络预测公路运量:从原理到实战全流程
  • 个性个人网站模板成都市青羊区建设局官方网站
  • 专业上海网站建设公司排名凡科建站电话
  • 手机端网站seo济南会做网站的公司
  • 找个人合伙做网站wordpress重建伪静态
  • 蓝牙笔记(1)
  • 简单做一个舒尔特方格小游戏