04 QT实现一个简单的看图程序

来源:互联网 发布:情义我心知黎明 编辑:程序博客网 时间:2024/06/05 18:54

QDir类用于管理目录的操作
QDir(const QString &path = QString())
//创建对象时,可以指定此对象是操作的目录的路径

QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const
//获取目录里的文件名,并过滤。 返回一个字符串数组的首地址
// QStringList其实就类模板QList<QString>

QString path() const
// 获取当前对象所操作的目录路径

main.cpp

#include <QApplication>#include <QWidget>#include <QPixmap>#include <QDir>#include <QDebug>#include <QLabel>#include <QKeyEvent>#include <QResizeEvent>class MyWin : public  QWidget {private:    QDir *dir; //指向操作目录的对象    QStringList files; //存放文件名列表    QLabel  *label; //用于显示图像    int  num; //记录当前显示的是第几个文件protected:    void keyPressEvent(QKeyEvent *e); //捕捉按键事件    void resizeEvent(QResizeEvent *event); //捕捉窗口大小发生改变的事件public:    MyWin(QString dir_path, QWidget *parent = NULL); //创建对象时需指定图像文件的路径    ~MyWin();};MyWin::MyWin(QString dir_path, QWidget *parent) : QWidget(parent){    label = new QLabel(this);    dir = new QDir(dir_path);  // 创建目录对象,并指定操作的目录路径    QStringList filters; //用于指定过滤文件类型    filters << "*.jpg" << "*.bmp" << "*.png"; //指定只获取扩展名为这三种的图像文件名    files = dir->entryList(filters, QDir::Files, QDir::Time); //获取目录里面的过虑后的文件名    num = 0; //初始时,显示第0张图    if (0 == files.size())  //如果获取文件的个数为0时不显示图像.        return;    label->resize(this->size()); //设置标签为窗口的大小    label->setScaledContents(true); //缩放图像    label->setPixmap(QPixmap(dir->path()+"/"+files[0])); //不要忘了操作符重载}MyWin::~MyWin(){    delete dir;    delete label;}void MyWin::keyPressEvent(QKeyEvent *e){    int n = num;    if (0 == files.size())        return;    switch (e->key())    {    case Qt::Key_Left: //看前一张图像,如果到头,则改为从最后一张开始        n--;        if (n < 0)            n = files.size()-1;        break;    case Qt::Key_Right: //看后一张图像,如果到最后,则改为从第一张重新开始        n++;        if (n >= files.size())            n = 0;        break;    }    if (n == num)        return;    num = n;    label->setPixmap(QPixmap(dir->path()+"/"+files[n]));}void MyWin::resizeEvent(QResizeEvent *event){    label->resize(event->size()); //标签大小随窗口大小改变而改变}int main(int argc, char *argv[]){    QApplication a(argc, argv);    MyWin win("/icons");    MyWin win2("/disk3/allshares");    win.show();    win2.show();    return a.exec();}
0 0
原创粉丝点击