Qt加载磁盘文件和对文件内容进行过滤
2017-10-23 21:21
441 查看
一:关键函数
1,QDir file(path); //当前文件路径
2,QStringList fileList=file.entryList();//获得进入目录的文件列表
3,qApp->applicationDirPath();//当前程序的目录
二,实例代码
1,头文件
2,源文件
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;
}
博文索引 持续更新中。。。
相关文章推荐
- 如何用Java来进行文件切割和简单的内容过滤的实现
- 遍历文件夹下各个文件,然后读出每个文件的内容,并对内容进行过滤输出
- 如何用Java来进行文件切割和简单的内容过滤
- 如何用java来进行文件切割和简单的内容过滤
- shell脚本编程:将文件中指定行的内容进行替换
- 使用java对某些文件内容进行替换并另存在新的目录下
- Qt5.2加载百度地图进行相关操作
- SpringCloud(第 032 篇)配置服务端ClientServer对配置文件内容进行RSA加解密
- 内容分多个excel文件进行存储数据
- 加载指定包名下的全部类以及指定annotation进行过滤的工具类
- 使用文件进行数据存储及读取文件内容
- java 对文件内容进行分词统计
- Windows驱动_文件系统微小过滤驱动之二驱动的安装和加载
- Python过滤txt文件内重复内容的方法
- 在进行javaIO写文件操作后文件内容为空的情况
- linux过滤旧文件中的空行和注释行剩余内容组成新文件
- Qt加载QSS文件
- spring 如何动态加载properties文件的内容
- maven在对resources目录下的文件进行过滤时出现部分文件未能正确替换
- 通过字符流来对文件进行内容的读取和写入操作