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;
    }

  • 相关阅读:
    数据结构和算法学习笔记七:图的搜索
    数据结构和算法学习笔记六:图的相关实现
    Unity常用的3D数学知识
    Unity计时器--简版
    基于前缀树的红点系统
    数据结构和算法学习笔记五:图的基本概念
    C内存管理
    如何解决KEIL中文乱码问题
    C语言结构体变量作为函数形参
    C的结构体
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2728281.html
Copyright © 2011-2022 走看看