图片的功能

源码:

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 图片浏览器 实现图片的放大缩小翻转等功能的更多相关文章

  1. Android 图片浏览器 从原来位置放大至全屏显示

    android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...

  2. wxParse解析富文本内容使点击图片可以选中并实现放大缩小

    wxParse解析富文本内容不多说,之前写过步骤介绍,主要是在使用过程中发现解析的富文本内容里有图片时有的可以点击放大缩小,有的点击却报错,找不到imgUrls. 经过排查发现:循环解析的富文本内容正 ...

  3. Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. c# 调用系统默认图片浏览器打开图片

    private void OpenImage(string fileName) { try { Process.Start(fileName); } catch (Exception ex) { // ...

  5. 调Windows 7的图片浏览器查看图片

    public static void viewPicFromWindows(string pPicPath) { if (pPicPath!="" && Syste ...

  6. 使用qt写的简单的图片浏览器

    功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使 ...

  7. JS微信网页使用图片预览(放大缩小)

    前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...

  8. 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等

    在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...

  9. [翻译] AGPhotoBrowser 好用的图片浏览器

    AGPhotoBrowser  好用的图片浏览器 https://github.com/andreagiavatto/AGPhotoBrowser A photo browser for iOS6 a ...

随机推荐

  1. html 笔记2

    .css重用 <style> 如果整个页面的宽度 > 900px时: { .c{ 共有 } .c1{ 独有 } } .c2{ 独有 } </style> <div ...

  2. Select 选择算法 - 编程珠玑(续) 笔记

    Select 算法 I 编程珠玑(续)介绍的 Quickselect 算法 选择 N 个元素中的第 K 小(大)值,是日常场景中常见的问题,也是经典的算法问题. 选取 N 个元素的数组的中的第 K 小 ...

  3. phpMyAdmin出现找不到mysql扩展和Cannot log in to the MySQL server问题

    环境:Centos6.5,Apache2.4, PHP5.5, MySql5.6. phpMyAdmin版本:https://files.phpmyadmin.net/phpMyAdmin/4.4.1 ...

  4. main函数argc,argv操作

    使用main(int argc, char *argv[])==main(int argc, char **argv)的基本操作是linux编程的最基本的一步,在windows下也是exe脱离IDE运 ...

  5. xcode 条件调试

    添加条件 有时候我们可能会在某个循环中创建断点,但一次又一次地点击 continue 直到我们想要的条件出现,显然是一种非常低效的方式.好在 Xcode 为我们提供了条件断点. 首先在下列代码中插入一 ...

  6. Linux常用浏览器

    1.火狐浏览器是一个安全高效的浏览器,它具有速度快.隐私保护.丰富的插件资源.不同设备之间同步数据.分页浏览.个性化定制等特性. 2.谷歌浏览器 谷歌浏览器是一个由Google公司开发的网页浏览器,具 ...

  7. React开发实时聊天招聘工具 -第一章

    第一章 课程道学 6个页面 弱化css Antd-mobile作为组件库 Redux 状态管理 React-Router 路由 Axios异步请求 后端Express框架 Socket.io 数据库: ...

  8. 判断控件的CGRect是否重合,获取控件的最大XY值

    判断给定的点是否被一个CGRect包含: BOOL contains = CGRectContainsPoint(CGRect rect, CGPoint point); 判断一个CGRect是否和另 ...

  9. centos下安装redis/mysql等基础环境

    1.修改语言 阿里云的ECS默认语言是:en_US.UTF-8,需要改成zh_CN.UTF-8 修改方法:vim /etc/locale.conf,然后重启. 查看方法:echo $LANG 2.安装 ...

  10. valgrind的说明使用和原理

    编译 #gcc -g -o test test.c 内存检查#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test ...