本人分享的是不用ui界面的图片浏览器,它可以从系统文件里面选取各种格式的图片(可以自己设置),然后点击左右的按钮来浏览这些图片,而且还支持图片多选的功能。
以下是Widget.h中的代码:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
public slots:
void openfiles();
void lshow();
void rshow();
private:
QLabel *lab;
QLineEdit *edt;
QPushButton *btn, *lbtn, *rbtn;
QStringList file;
int current_index;
};
#endif // WIDGET_H
Widget.cpp中的代码:
#include "widget.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFileDialog>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
lab = new QLabel(this);
lab->setFixedSize(640, 480);
lab->setScaledContents(true);//设置图片的自动缩放
lbtn = new QPushButton(QIcon("lpic.png"),"上一张", this);
rbtn = new QPushButton(QIcon("rpic.jpg"),"下一张", this);
btn = new QPushButton(QIcon("openfile.png"), "查找",this);
QHBoxLayout *hbox = new QHBoxLayout;
hbox->addStretch();
hbox->addWidget(lbtn);
hbox->addWidget(btn);
hbox->addWidget(rbtn);
hbox->addStretch();
QVBoxLayout * vbox = new QVBoxLayout;
// lab->installEventFilter(this);
vbox->addWidget(lab);
vbox->addLayout(hbox);
setLayout(vbox);
file.clear();
current_index = 0;
connect(btn, SIGNAL(clicked()), this, SLOT(openfiles()));
connect(rbtn, SIGNAL(clicked()), this, SLOT(rshow()));
connect(lbtn, SIGNAL(clicked()), this, SLOT(lshow()));
}
void Widget::openfiles()
{
file = QFileDialog::getOpenFileNames(this, "select pic", ".", "Images (*.png *.xpm *.jpg)");
lab->setPixmap(QPixmap(file[0]));
}
void Widget::lshow()
{
if (current_index == 0)
current_index = file.length()-1;
else
current_index--;
lab->setPixmap(QPixmap(file[current_index]));
}
void Widget::rshow()
{
if (current_index == file.length()-1)
current_index = 0;
else
current_index++;
lab->setPixmap(QPixmap(file[current_index]));
}
Widget::~Widget()
{
}