图片浏览器

/* widget.h*/
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QMouseEvent>


class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
public slots:
    void lefebut();
    void rightbut();
    void openbut();
    void showpic()
    {
        lab->setPixmap(QPixmap(files[len]));
    }
signals:
    sendmesg();//发送信号

protected:
    void keyPressEvent(QKeyEvent *event); /* 键盘按键 */
    void wheelEvent(QWheelEvent *event); /* 鼠标滚动 */
    void mousePressEvent(QMouseEvent *event);


private:
    QLabel *lab;
    QPushButton *btn_l, *btn_r,*btn_o;
    int len;
    QStringList files;

};

#endif // WIDGET_H
/* widget.cpp*/
#include "widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QFileDialog>   /* 文件对话框*/
#include <QDebug>



Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(640, 480);

    btn_l = new QPushButton("<-",this);
    btn_o = new QPushButton("O",this);
    btn_r = new QPushButton("->",this);
    lab = new QLabel(this);
     lab->setScaledContents(true);
    QHBoxLayout *hbox = new QHBoxLayout;
    hbox->addStretch();
    hbox->addWidget(btn_l);
    hbox->addWidget(btn_o);
    hbox->addWidget(btn_r);
    hbox->addStretch();

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(lab);
    vbox->addLayout(hbox);
    setLayout(vbox);

    connect(btn_o, SIGNAL(clicked()), this, SLOT(openbut()));
    connect(btn_r, SIGNAL(clicked()), this, SLOT(rightbut()));
    connect(btn_l, SIGNAL(clicked()), this, SLOT(lefebut()));
    connect(this, SIGNAL(sendmesg()), this, SLOT(showpic()));
}

Widget::~Widget()
{

}
void Widget::mousePressEvent(QMouseEvent *event)
{
    if (1 == event->button())
    {
        if (0 == (len))
        {
            len = files.length() - 1;
            lab->setPixmap(QPixmap(files[len]));
        }
        else
        {
            len--;
            lab->setPixmap(QPixmap(files[len]));
        }
    }
    else if (2 == event->button())
    {
        if ((files.length() - 1) == (len))
        {
            len = 0;
            lab->setPixmap(QPixmap(files[len]));
        }
        else
        {
            len++;
            lab->setPixmap(QPixmap(files[len]));
        }
    }
    emit sendmesg();//发送信号
}

void Widget::keyPressEvent(QKeyEvent *event) /* 键盘按键 */
{
    if (Qt::Key_1 == event->key())
    {
        if (0 == (len))
        {
            len = files.length() - 1;
            lab->setPixmap(QPixmap(files[len]));
        }
        else
        {
            len--;
            lab->setPixmap(QPixmap(files[len]));
        }
    }
    else if (Qt::Key_2 == event->key())
    {
        if ((files.length() - 1) == (len))
        {
            len = 0;
            lab->setPixmap(QPixmap(files[len]));
        }
        else
        {
            len++;
            lab->setPixmap(QPixmap(files[len]));
        }
    }
    emit sendmesg();//发送信号
}

void Widget::wheelEvent(QWheelEvent *event) /* 鼠标滚动 */
{
   if (-120 == event->delta())
   {
       if (0 == (len))
       {
           len = files.length() - 1;
           lab->setPixmap(QPixmap(files[len]));
       }
       else
       {
           len--;
           lab->setPixmap(QPixmap(files[len]));
       }
   }
   else if (120 == event->delta())
   {
       if ((files.length() - 1) == (len))
       {
           len = 0;
           lab->setPixmap(QPixmap(files[len]));
       }
       else
       {
           len++;
           lab->setPixmap(QPixmap(files[len]));
       }
   }
   emit sendmesg();//发送信号
}

void Widget::lefebut()
{
    if (0 == (len))
    {
        len = files.length() - 1;
        lab->setPixmap(QPixmap(files[len]));
    }
    else
    {
        len--;
        lab->setPixmap(QPixmap(files[len]));
    }

}

void Widget::rightbut()
{
    if ((files.length() - 1) == (len))
    {
        len = 0;
        lab->setPixmap(QPixmap(files[len]));
    }
    else
    {
        len++;
        lab->setPixmap(QPixmap(files[len]));
    }
}

void Widget::openbut()
{
    files = QFileDialog::getOpenFileNames(this, "Open Image", ".","Images (*.png *.jpg *.xpm)");

    len = 0;

    qDebug() << "---1---" <<len;
    lab->setScaledContents(true);
    lab->setPixmap(QPixmap(files[len]));
}

/* main.cpp*/
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
acdsee 经典版ACDSee Revive5是老牌看图软件acdsee历史上一个经典版本,运行速度仅次于3.1,而插件兼容直至10.0,是老机器的最佳选择。 软件说明: 基于acdsee 5.01中文原版制作,使用原版安装方式 去除在线冲印插件、快速上手指南(htm)、帮助文件、音频视频支持(没人会拿acdsee当播放器用吧)、柯达photocd支持、相册创建插件、压缩包创建插件、邮件插件、ftp插件、sendpix插件、roboenhancer插件、foto angelo(幻灯片创建器)、相机支持插件(都是很老的型号)、试用期组件、自述文件、购买提示(htm) 保留主要功能和图像格式支持 保留zip支持、rar支持、重复文件查找器、fotocanvas(编辑器)、realoptimizer 将标准格式支持库ide_acdstd.apl替换为8.0版、psd支持库ide_psd.apl替换为9.0版(再新的版本会出错),解决上一版无法保存png和psd的问题。其余插件替换为10.0版 集成xnview右键看图扩展3.2(可选安装) 安装时自动跳过许可协议和序列号提示 禁止定期检查更新 禁止文件列表视图显示音频视频文件 禁止首次启动时显示每日提示 首次启动时会弹窗提示选择“完全”或“简洁”界面,但由于软件本身bug,直接点这两个选项切换界面是无效的。需要点击此窗口左下角的“自定义”,在最下面的“布局”中选“简洁”,确定后即可使用acdsee 3.1的简洁界面。以下截图所示即为简洁界面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值