Qt 图片浏览器 实现图片的放大缩小翻转等功能
图片的功能
源码:
wiget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QPixmap>
#include <QImage>
#include <QPushButton>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QLabel>
#include <QWidget>
#include <QPalette>
#include <QTimer>
#include <QString>
#include <QPainter>
#include <QPaintEvent>
#include <QDebug>
#include <QFileDialog>
#include <QStringList>
#include <QMessageBox>
#include <QDir>
#include <QFile>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
QLabel *label;
QTimer *timer;
QPixmap pix;
private slots:
void W_timergo();
void W_go();
void W_back();
void W_close();
void W_start();
void W_stop();
void W_max();
void W_min();
void W_flip();
void W_delete();
void W_open();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
wiget.cpp
#include "widget.h"
#include "ui_widget.h"
static int num;
static int flag=1;
QString image[3] = {":/prefix1/1.jpg",":/prefix1/2.jpg",":/prefix1/3.jpg"};
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pix;
label = new QLabel;
timer = new QTimer;
QPalette palette;
ui->scrollArea->setWidget(label);
ui->scrollArea->setAlignment(Qt::AlignCenter);
palette.setBrush(QPalette::Background,QBrush(QPixmap(":/prefix1/4.jpg")));
this->setPalette(palette);
connect(timer,SIGNAL(timeout()),this,SLOT(W_go()));
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(W_go()));
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(W_close()));
connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(W_start()));
connect(ui->pushButton_5,SIGNAL(clicked()),this,SLOT(W_stop()));
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(W_back()));
connect(ui->pushButton_6,SIGNAL(clicked()),this,SLOT(W_max()));
connect(ui->pushButton_7,SIGNAL(clicked()),this,SLOT(W_min()));
connect(ui->pushButton_8,SIGNAL(clicked()),this,SLOT(W_flip()));
connect(ui->pushButton_9,SIGNAL(clicked()),this,SLOT(W_delete()));
connect(ui->pushButton_10,SIGNAL(clicked()),this,SLOT(W_open()));
}
void Widget::W_timergo()
{
pix.load(image[num]);
label->setPixmap(pix);
if(num==2)
{
num = -1;
}
num++;
}
void Widget::W_go()
{
timer->stop();
pix.load(image[num]);
label->setPixmap(pix);
if(num==2)
{
num = -1;
}
num++;
}
void Widget::W_back()
{
if(num < 0)
{
num = 2;
}
timer->stop();
pix.load(image[num]);
label->setPixmap(pix);
num--;
}
void Widget::W_close()
{
this->close();
}
void Widget::W_start()
{
timer->start(2000);
}
void Widget::W_stop()
{
timer->stop();
}
void Widget::W_max()
{
timer->stop();
float MaxX,MaxY;
MaxX = pix.height();
MaxY = pix.width();
pix = pix.scaled(MaxX*2,MaxY*2,Qt::KeepAspectRatio);
label->setPixmap(pix);
}
void Widget::W_min()
{
timer->stop();
float MaxX,MaxY;
MaxX = pix.height();
MaxY = pix.width();
pix = pix.scaled(MaxX/2,MaxY/2,Qt::KeepAspectRatio);
label->setPixmap(pix);
}
void Widget::W_flip()
{
timer->stop();
QMatrix leftmatrix;
leftmatrix.rotate(90*flag);
flag++;
if(flag == 4)
{
flag = 0;
}
label->setPixmap(QPixmap(image[num]).transformed(leftmatrix,Qt::SmoothTransformation));
}
void Widget::W_delete()
{
timer->stop();
QStringList list;
list=QFileDialog::getOpenFileNames(this,"open image","/","*.jpg");
qDebug()<<list.at(0);
pix.load(list.at(0));
label->setPixmap(pix);
QMessageBox::StandardButton rb = QMessageBox::question(NULL,"Warning",
"Do you want to delete the picture? ",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if(rb == QMessageBox::Yes)
{
QFile::remove(list.at(0));//刪除文件
}
}
void Widget::W_open()
{
timer->stop();
QStringList list;
list=QFileDialog::getOpenFileNames(this,"open image","/","*.jpg");
qDebug()<<list.at(0);
pix.load(list.at(0));
label->setPixmap(pix);
}
Widget::~Widget()
{
delete ui;
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
Qt 图片浏览器 实现图片的放大缩小翻转等功能的更多相关文章
- Android 图片浏览器 从原来位置放大至全屏显示
android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...
- wxParse解析富文本内容使点击图片可以选中并实现放大缩小
wxParse解析富文本内容不多说,之前写过步骤介绍,主要是在使用过程中发现解析的富文本内容里有图片时有的可以点击放大缩小,有的点击却报错,找不到imgUrls. 经过排查发现:循环解析的富文本内容正 ...
- Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- c# 调用系统默认图片浏览器打开图片
private void OpenImage(string fileName) { try { Process.Start(fileName); } catch (Exception ex) { // ...
- 调Windows 7的图片浏览器查看图片
public static void viewPicFromWindows(string pPicPath) { if (pPicPath!="" && Syste ...
- 使用qt写的简单的图片浏览器
功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使 ...
- JS微信网页使用图片预览(放大缩小)
前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...
- [翻译] AGPhotoBrowser 好用的图片浏览器
AGPhotoBrowser 好用的图片浏览器 https://github.com/andreagiavatto/AGPhotoBrowser A photo browser for iOS6 a ...
随机推荐
- .Net 安装aliyun-oss
NuGet安装 如果您的Visual Studio没有安装NuGet,请先安装 NuGet. 安装好NuGet后,先在Visual Studio中新建或者打开已有的项目,然后选择工具 > NuG ...
- dedecms关键词维护里面字数多的词优先字数少的词的解决办法
织梦后台的关键词维护默认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:创业.创业方向,第二个词包含了第一个词,在文章中如果出现“创业方向”这个词,默认情况下只会给创业两个字添加关键词超链 ...
- cz.msebera.android.httpclient.conn.ConnectTimeoutException: Connect to /192.168.23.1:8080 timed out(Android访问后台一直说链接超时)
明明之前还是可以运行的练习,过段时间却运行不了,一直说访问后台超时, 对于这个问题我整整弄了两天加一个晚上,心酸...,上网找了很多但是都解决不了,我就差没有砸电脑了. 首先 : 第一步:Androi ...
- AJAX 删除数据
var json = { "id":"12", "name":"admin"}$.ajax({ type: " ...
- 03012_预处理对象executeQuery方法(实现数据库的查询)
1.概述 (1)通过预处理对象的executeQuery方法,完成记录的select语句的执行: (2)操作格式统一如下: ①注册驱动: ②获取连接: ③获取预处理对象: ④SQL语句占位符设置实际参 ...
- CS224d lecture 9札记
欢迎转载.转载注明出处: http://blog.csdn.net/neighborhoodguo/article/details/47193885 近期几课的内容不是非常难.还有我的理解能力有所提高 ...
- (七十一)关于UITableView退出崩溃的问题和滚动究竟部的方法
[TableView退出崩溃的问题] 近期在使用TableView时偶然发如今TableView中数据较多时,假设在滚动过程中退出TableView到上一界面.会引起程序的崩溃.经过网上查阅和思考我发 ...
- 參考mudo logging写的win下logging
#pragma once #include <boost/noncopyable.hpp> #include <boost/scoped_ptr.hpp> #include & ...
- js插件---Amaze UI dialog如何使用
js插件---Amaze UI dialog如何使用 一.总结 一句话总结:别人给你列出来的参考手册照着用先 1.在哪里去找插件参考资料或者使用手册(一般位置找不到的时候)? github上面啊,非常 ...
- html5中的容器标签和文本标签
html5中的容器标签和文本标签 html中的容器级标签和文本级标签,css中的块级元素和行内元素是我们常常拿来比较的四个名词(行内块级暂时先不考虑). 容器标签 容器级的标签可以简单的理解为能嵌套其 ...