Qt实现读取图像并且窗口加滑动条,点击图像在鼠标点击处绘制小图像
来源:互联网 发布:徐州软件行业发展前景 编辑:程序博客网 时间:2024/06/05 00:33
最近有点忙,在拿Qt编一个软件,其中有一小部分对图像进行处理的工作,自己通过查资料,写了一个小例子,这个小例子可以实现读取图像,给图像窗口添加滑动条,并且在图像上点击鼠标,可以在鼠标点击处加入一个小的图像。
废话不多说。直接上源码:
main.cpp:
#include "labeltest.h"#include <QtWidgets/QApplication>#include <QScrollArea>int main(int argc, char *argv[]){QApplication a(argc, argv);LabelTest w;return a.exec();}
ImageLabel.cpp:
#include "ImageLabel.h"ImageLabel::ImageLabel( QWidget *parent /*= 0*/, Qt::WindowFlags f /*= 0*/ ):QLabel(parent){setMouseTracking(true);BackgroundPixmap.load("20130716203114.jpg");this->setPixmap(BackgroundPixmap);this->setMinimumSize(600,400);scrollArea = new QScrollArea();scrollArea->setWindowTitle("QScrollArea");scrollArea->setWidgetResizable(true);scrollArea->setMaximumSize(600,600);//scrollArea->setMinimumSize(600,600);scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);scrollArea->setWidget(this);scrollArea->show();SmallPixmap = QPixmap(50,50);SmallPixmap.fill(QColor(255,255,255));x = -1;y = -1;}ImageLabel::~ImageLabel(){}void ImageLabel::mousePressEvent( QMouseEvent *evt ){x = evt->x();y = evt->y();update();}void ImageLabel::mouseMoveEvent( QMouseEvent *ev ){}void ImageLabel::paintEvent(QPaintEvent *ev){QPainter painter(this);painter.drawPixmap(0, 0, BackgroundPixmap);painter.drawPixmap(x, y, SmallPixmap);}
ImageLabel.h:
#ifndef _IMAHE_LABEL_H_
#define _IMAHE_LABEL_H_#include <QtWidgets/QWidget>#include <QtWidgets/QLabel>#include <QtWidgets/QScrollArea>#include <QPainter>#include <QMouseEvent>class ImageLabel : public QLabel{public:explicit ImageLabel(QWidget *parent = 0, Qt::WindowFlags f = 0);virtual ~ImageLabel();protected:virtual void mousePressEvent(QMouseEvent *evt);virtual void mouseMoveEvent(QMouseEvent *ev);virtual void paintEvent(QPaintEvent *ev);private:QScrollArea *scrollArea;QPixmap BackgroundPixmap;QPixmap SmallPixmap;int x, y;};#endif//_IMAHE_LABEL_H_
Labeltest.h:
#ifndef LABELTEST_H#define LABELTEST_H#include <QtWidgets/QMainWindow>#include "ui_labeltest.h"class LabelTest : public QMainWindow{Q_OBJECTpublic:LabelTest(QWidget *parent = 0);~LabelTest();private:Ui::LabelTestClass ui;};#endif // LABELTEST_H
Labeltest.cpp:
#include "labeltest.h"#include "ImageLabel.h"LabelTest::LabelTest(QWidget *parent): QMainWindow(parent){ui.setupUi(this);ImageLabel *imageLabel = new ImageLabel(this);}LabelTest::~LabelTest(){}
最后的效果就是:
感觉Qt关于图像处理方面的东西还是有点少,这个工程贴出来,希望对大家有所帮助吧~
- Qt实现读取图像并且窗口加滑动条,点击图像在鼠标点击处绘制小图像
- GUI 鼠标点击图像响应事件
- 在canvas里绘制多个图像并且旋转图像
- 图像----滑动条
- 图像点击跟踪系统
- 用opencv读取图像的每个像素值,鼠标点击获取每一个点,并显示像素
- 利用opencv实现图像滑动窗口操作
- OpenCV图像窗口滚动条实现
- QT读取图像 显示
- 对鼠标点击图像的实时分割的matlab程序
- matlab gui matlab gui 鼠标点击显示图像颜色值
- 工具——通过鼠标点击获取图像坐标
- 图像处理6:鼠标绘制
- 实现鼠标拖动图像
- 用鼠标点击图像,获取图像上某一点的(b,g,r)值
- 加载图像并点击读取坐标值和像素值
- android 点击图像显示大图
- QT 使用Pixmap绘制图像
- 【1307】TextView动态显示wifi状态的改变
- 用Collections.sort方法对list排序
- 判断守护进程的方法
- Servlet总结
- RSA算法原理
- Qt实现读取图像并且窗口加滑动条,点击图像在鼠标点击处绘制小图像
- 用pt-table-sync修复不一致的数据
- 同步和异步,阻塞和非阻塞
- 传统行业,IT行业!
- 2013年7月20日成都Qclub《自动化测试》沙龙
- 解决Debian安装后中文乱码
- 2013编程之美挑战赛---管道系统
- HDU 4602
- myeclipse连接数据库