您的位置:首页 > 编程语言 > Qt开发

Qt加载磁盘文件和对文件内容进行过滤

2017-10-23 21:21 441 查看
一:关键函数

1,QDir file(path);  //当前文件路径

2,QStringList fileList=file.entryList();//获得进入目录的文件列表

3,qApp->applicationDirPath();//当前程序的目录

4,QDir::setCurrent(path);  //设置当前的目录


二,实例代码

1,头文件

#ifndef LOADFILEFORM_H

#define LOADFILEFORM_H


#include <QWidget>

#include <
4000
/span><QDebug>



//设置页面的背景

#include <QPaintEvent>

#include <QPainter>

#include <QPen>

#include <QPixmap>


//加载文件所需的函数

#include <QStringList>

#include <QFile>

#include <QFileInfoList>   //文件信息列表

#include <QDir>  //文件路径

//显示文件列表

#include <QListWidgetItem>

#include <QStringList>

#include <QMessageBox>

#define UDISK "./file/udisk/"  //U盘路径

#define LOCALFILEDIR "./file/local/"//本地文件路径


//编辑窗口申明

namespace Ui {

class LoadFileForm;

}


class LoadFileForm : public QWidget

{

Q_OBJECT


public:

explicit LoadFileForm(QWidget *parent = 0);

~LoadFileForm();

protected:

void paintEvent(QPaintEvent *event);


private slots:

void on_LocalContents_clicked();


void on_UContents_clicked();


void on_buttonYes_clicked();


void on_buttonCancel_clicked();


void on_fileContents_currentTextChanged(const QString ¤tText);

private:

Ui::LoadFileForm *ui;

bool onlyShowBmp;  //只显示Bmp文件

void initLoadFileForm(); //初始化

QString currentFile;

public:

void setShowBmp(); //设置图片

QString fileFilter;  //文件过滤器,显示特定的文件

void setFileFileter(QString filter);

signals:

void buttonYesClickedBackToOneinterface();  //确定键按下发出信号

void buttonCancelClickedBackToOneinterface();//取消键按下发出信号


void currentFileName(QString fileName); //发送当前的文件名


void goBackToEditForm(); //返回到编辑界面


private:

bool isRemoveFile;

//删除文件设置函数

public:

void removeFile();

};


#endif // LOADFILEFORM_H



2,源文件

#include "loadfileform.h"

#include "ui_loadfileform.h"


LoadFileForm::LoadFileForm(QWidget *parent) :

QWidget(parent),

ui(new Ui::LoadFileForm)

{

ui->setupUi(this);

initLoadFileForm();

}



//初始化函数

void LoadFileForm::initLoadFileForm()

{

//设置不显示边框

this->setWindowFlags(Qt::FramelessWindowHint);


update();  //初始化界面


onlyShowBmp=false;  //只显示Bmp标志位为假

//打开本地文件

on_LocalContents_clicked();


//是否删除文件设置为假

isRemoveFile=false;


//初始化为显示所有的文件

fileFilter="all";

}

//页面初始化函数

void LoadFileForm::paintEvent(QPaintEvent *event)

{

QPainter painter(this);

QPen pen;

painter.setPen(pen);

painter.drawPixmap(0,0,this->width(),this->height(),QPixmap("./imag/1background.png"));

}


LoadFileForm::~LoadFileForm()

{

delete ui;

}


//过滤需要打开的特定文件

void LoadFileForm::setFileFileter(QString filter)

{

 fileFilter=filter; //设置文件的过滤器

//默认打开本地目录

on_LocalContents_clicked();

}

//打开本地目录按钮

void LoadFileForm::on_LocalContents_clicked()

{

  qDebug()<<"本地";


currentFile=LOCALFILEDIR;//当前文件路径


ui->fileContents->clear();  //清楚显示框的内容

QDir file(LOCALFILEDIR);//打开本地文件路径

QStringList fileList=file.entryList();   //获得进入目录的文件列表


//获得文件列表

int i=0;

while(i<fileList.size())  //文件列表有多少项,就循环多少次

{


if(fileList.at(i)=="."|fileList.at(i)=="..")  //无效文件名

{

i++;

continue;

}


if(onlyShowBmp)

{

//有需要的文件就添加否则不添加

if(fileList.at(i).contains(".bmp"))

{

qDebug()<<"bmp";

  //新建文件项目

 QListWidgetItem *item=new QListWidgetItem;

 item->setText(fileList.at(i));   //将该文件信息添加到项目

 ui->fileContents->addItem(item);

 i++;

 continue;

}

else

{

  //没有Bmp文件  则跳过

   i++;

  continue;

}

}


//过滤显示的文件

if(fileFilter=="all")

{

//显示所有文件

QListWidgetItem *item=new QListWidgetItem;

item->setText(fileList.at(i));   //将该文件信息添加到项目

ui->fileContents->addItem(item);

i++;

}

else if(fileFilter=="txt")

{

//显示文本文件

//有需要的文件就添加否则不添加

if(fileList.at(i).contains(".txt"))

{

QListWidgetItem *item=new QListWidgetItem;

item->setText(fileList.at(i));   //将该文件信息添加到项目

ui->fileContents->addItem(item);

i++;

continue;

}

else

{

//没有txt文件  则跳过

i++;

continue;

}

}

else

{

i++;

}

}

}


//打开U盘目录按钮

void LoadFileForm::on_UContents_clicked()

{

qDebug()<<"移动";

currentFile=UDISK;   //当前文件路径


ui->fileContents->clear();  //清楚显示框的内容

QDir file(UDISK);//打开本地文件路径

QStringList fileList=file.entryList();   //获得进入目录的文件列表


//获得文件列表

int i=0;

while(i<fileList.size())  //文件列表有多少项,就循环多少次

{


if(fileList.at(i)=="."|fileList.at(i)=="..")  //无效文件名

{

i++;

continue;

}


if(onlyShowBmp)

{

//有需要的文件就添加否则不添加

if(fileList.at(i).contains(".bmp"))

{

qDebug()<<"bmp";

  //新建文件项目

 QListWidgetItem *item=new QListWidgetItem;

 item->setText(fileList.at(i));   //将该文件信息添加到项目

 ui->fileContents->addItem(item);

 i++;

 continue;

}

else

{

  //没有Bmp文件  则跳过

   i++;

  continue;

}

}


//过滤显示的文件

if(fileFilter=="all")

{

//显示所有文件

QListWidgetItem *item=new QListWidgetItem;

item->setText(fileList.at(i));   //将该文件信息添加到项目

ui->fileContents->addItem(item);

i++;

}

else if(fileFilter=="txt")

{

//显示文本文件

//有需要的文件就添加否则不添加

if(fileList.at(i).contains(".txt"))

{

QListWidgetItem *item=new QListWidgetItem;

item->setText(fileList.at(i));   //将该文件信息添加到项目

ui->fileContents->addItem(item);

i++;

continue;

}

else

{

//没有txt文件  则跳过

i++;

continue;

}

}

else

{

i++;

}

}

}


//确定按钮

void LoadFileForm::on_buttonYes_clicked()

{

onlyShowBmp=false;  //只显示Bmp标志位为假

//当前选中的位空的话


//没有选中任何一项

if(ui->fileContents->selectedItems().size()==0)

{

//弹出警告窗口并且得到返回值

if(QMessageBox::Yes==QMessageBox::warning(this,tr("警告"),tr("没有选中任何文件,是否返回"),QMessageBox::Yes,QMessageBox::Cancel))

{

//确定返回

emit buttonYesClickedBackToOneinterface();//确定键的信号

emit currentFileName(currentFile);  //发送当前选中的文件

this->hide(); //隐藏本窗口

return ;  //没有选中文件,不发送文件名

}

else

{

//留在本窗口

on_LocalContents_clicked();

return;

}

}

//当前选中的不为空

currentFile=currentFile+ui->fileContents->currentItem()->text();  //得到当前选中的内容

if(isRemoveFile)

{

//删除当前的文件操作

isRemoveFile=false;

QFile::remove(currentFile);

emit goBackToEditForm();

}

else

{

  emit currentFileName(currentFile);  //发送当前选中的文件

}

//保存当前进入的路径

QStringList t=currentFile.split("/");

currentFile=t[0]+"/"+t[1]+"/"+t[2]+"/";

this->hide();  //隐藏本窗口

}


//取消按钮

void LoadFileForm::on_buttonCancel_clicked()

{

onlyShowBmp=false;  //只显示Bmp标志位为假

emit buttonCancelClickedBackToOneinterface();//取消的信号

emit goBackToEditForm();

this->hide();  //隐藏本窗口

}


//当前文本改变

void LoadFileForm::on_fileContents_currentTextChanged(const QString ¤tText)

{

qDebug()<<currentText;

}


void LoadFileForm::setShowBmp()

{

//设置只显示Bmp图片文件

onlyShowBmp=true;

on_LocalContents_clicked();

}


//删除文件函数

void LoadFileForm::removeFile()

{

isRemoveFile=true;

}

博文索引  持续更新中。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: