zoukankan      html  css  js  c++  java
  • 用QFileSystemModel和Listview做的简易图片浏览

    QFileSystemModel这个类今天第一次用到,个人理解QFileSystemMode这个类主要是用来监视文件系统中的某个目录的变化,并及时更新数据。先介绍一下他的成员函数,

    QFileSystemModel* model= new QFileSystemModel();
     model->setNameFilterDisables(false);

    setNameFilterDisables 是用来设置文件名是否可以重命名。接着看下面

    model->setFilter(QDir::Dirs|QDir::Drives|QDir::Files|QDir::NoDotAndDotDot);

    setFilter:是个过虑器可以根据自己的设置过虑出(呈现出)你想要的“model”。看下面

    QStringList list_name;
    list_name<<"*.jpg"<<"*.gif"<<"*.png";
    model->setNameFilters(list_name);

    setNameFilers:跟setFiler的作用相似,可以根据字符串呈现。这句话作用是只显示,.jpg  .gif  .png格式的图片。
    还有一句很重要的话

    ui->listView->setRootIndex(model->setRootPath("/mnt/xuechao/src"));

    使listView显示指定的目录文件。

    下面是源码:

    #include "widget.h"
    #include "ui_widget.h"
    #include <QVBoxLayout>
    #include <QFileSystemModel>
    #include <QListView>
    #include <QDirModel>
    #include <QDebug>
    #include <QModelIndex>
    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
           QFileSystemModel* model= new QFileSystemModel();
           model->setNameFilterDisables(false);
           model->setFilter(QDir::Dirs|QDir::Drives|QDir::Files|QDir::NoDotAndDotDot);
           QStringList list_name;
           list_name<<"*.jpg"<<"*.gif"<<"*.png";
           model->setNameFilters(list_name);
           //model->setRootPath("/home/public/xuechao/src");
           ui->listView->setMovement(QListView::Static);
           ui->listView->setViewMode(QListView::IconMode);
           ui->listView->setGridSize(QSize(80,80));
           ui->listView->setModel(model);
           ui->listView->setRootIndex(model->setRootPath("/mnt/xuechao/src"));
           connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(pictureShow(QModelIndex)));
    }
    void Widget::pictureShow(const QModelIndex &index)
    {
        qDebug("clicked");
    
            QString filepath = index.data(Qt::DisplayRole).toString();
            QStringList str;
            str.clear();
            //str.append("/mnt/yaffs/");
            str.append("/mnt/xuechao/src/");
            str.append(filepath);
            filepath = str.join("");
            qDebug() << "filepath" << filepath;
            str.clear();
            ui->label->setPixmap(QPixmap(filepath));
            ui->label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
           // QVBoxLayout *layout;
            //layout= new QVBoxLayout(ui->label);
    }
    
    
    Widget::~Widget()
    {
        delete ui;
    }

  • 相关阅读:
    解决 typedef void * POINTER_64 PVOID64; 问题
    短时间内快速获取随机数的方法
    怎样彻底重装IE
    在InstallShield中手动修改XML Files Changes
    Data, Privacy, & ECommerce ISDPE2010 Call for Papers
    DOS命令输出的重定向
    解决:Error spawning 'cmd.exe'
    wuapi 相关文件下载URL
    使用临界区 CRITICAL_SECTION 实现互斥
    修正 IPMSG 2.51 版本中的一点翻译错误
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2728281.html
Copyright © 2011-2022 走看看