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();
}
				
时间: 2024-10-12 02:33:50

Qt 图片浏览器 实现图片的放大缩小翻转等功能的相关文章

自定义圆形图片实现多点触控放大缩小和拖动

自定义imageview package com.bwie.view; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import androi

图片浏览(点击放大缩小支持多张图片浏览)

大神写的,我就参考参考啦! 从主布局开始了 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_pare

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

private void OpenImage(string fileName) { try { Process.Start(fileName); } catch (Exception ex) { // LogHelper.WriteLog("调用默认看图软件打开失败", ex); try { string arg = string.Format( "\"{0}\\Windows Photo Viewer\\PhotoViewer.dll\", ImageV

iOS图片浏览器控件 放大,缩小,UIScrollView

GitHub地址 https://github.com/JerryWanXuJie/XJAlbum 图片浏览器主要通过 UIScrollView 实现  在一个大的ScollView里面套 n个ScollView UIScrollView里主要是有两个属性,contentSize和contentoffset , contentSize 是设定UIScrollView的可交互的大小,contentoffset偏移量 设置第一层 UIScollView 主要是设置 contentSize 和 con

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

功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使用面向对象的思想,代码可以说是一团糟 基本上是缺少什么功能添加什么功能 截图如下 代码在这里 http://pan.baidu.com/s/1nujhhtJ

Java开发图片浏览器--记录

效果 设计思路 需求分析 图片浏览,上/下一张,放大缩小等基本功能.可以继续拓展的功能:缩略图.旋转,画笔修改等.此外,缩放实现较为简单,所以会出现失真.设计此类软件功能可参考ACDSee或irfanview等看图软件. 知识点 1.文件过滤.文件IO:FileFilter 2.文件对话框:JFileChooser(添加文件过滤功能) 3.浏览器主界面:JToolBar/JMenuBar/JScrollPane 4.响应事件:ActionListener/AbstractAction 5.展示图

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

在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚轮缩放图片: 2. 鼠标拖动图片: 3. 点击放大/缩小图标可以切换为原始大小和最佳只存模式: 4. 点击左右箭头可以进行翻页: 5. 点击缩略图显示大图: 6. 缩略图支持左右箭头分页,自动分页到选中的图片: 7. 右侧图片过滤: 8. 按ESC键自动退出图片浏览器. 想知道怎么实现的?那的先看看

Qt 显示图片 放大 缩小 移动(都是QT直接提供的功能)

本文章原创于www.yafeilinux.com 转载请注明出处. 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲.这里我们是利用QPixmap类来实现图片显示的. 一.利用QPixmap显示图片. 1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05.(以前已经说过,经常备份工程目录,是个很好的习惯) 2.在工程文件夹的debug文件夹中新建文件夹,我这里命名为images,用来存放要用的图片.我这里放了一张linux.jpg的图片.如下

基于jquery的鼠标滚动放大缩小图片

一直以来都想写一个图片放大和缩小的小玩意,本来以为会很复杂,这几天自己思考了一下,原来是so easy啊.目前实现的放大缩小,主要时依据鼠标的滚轮触发事件来实现的,废话少说直接上源码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns