一:關鍵函數
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 <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;
}
博文索引 持續更新中。。。