QT学习:目录操作与文件系统
生活随笔
收集整理的這篇文章主要介紹了
QT学习:目录操作与文件系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、文件大小及路徑獲取
得到一個文件的大小和所在目錄,代碼如下:
#include <QCoreApplication> #include <QStringList> #include <QDir> #include <QtDebug> qint64 du(const QString &path) {QDir dir(path);qint64 size = 0;foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files)){size += fileInfo.size();}foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)){size += du(path+QDir::separator()+subDir);}char unit ='B';qint64 curSize=size;if(curSize>1024){curSize/=1024;unit ='K';if(curSize>1024){curSize/=1024;unit ='M';if(curSize>1024){curSize/=1024;unit ='G';}}}qDebug()<<curSize<<unit<<"\t"<<qPrintable(path)<<endl;return size; } int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QStringList args = a.arguments();QString path;if(args.count()>1){path = args[1];}else{path = QDir::currentPath();}qDebug()<<path<<endl;du(path);return a.exec(); }二、文件系統瀏覽
創建工程FileView.pro,具體代碼及步驟如下如下:
(1)在頭文件“fileview.h”中,類FileView繼承自QDialog類,具體代碼如下:
(2)源文件“fileview.cpp”的具體代碼如下:
#include "fileview.h" #include <QStringList> #include <QIcon> FileView::FileView(QWidget *parent,Qt::WindowFlags f) : QDialog(parent,f) { setWindowTitle(tr("File View")); fileLineEdit = new QLineEdit(tr("/")); fileListWidget = new QListWidget; mainLayout = new QVBoxLayout(this); mainLayout->addWidget(fileLineEdit); mainLayout->addWidget(fileListWidget); connect(fileLineEdit,SIGNAL(returnPressed()),this,SLOT(slotShow (QDir ))); connect(fileListWidget,SIGNAL(itemDoubleClicked (QListWidgetItem*)), this,SLOT(slotDirShow(QListWidgetItem*))); QString root = "/"; QDir rootDir(root); QStringList string; string << "*"; QFileInfoList list=rootDir.entryInfoList(string); showFileInfoList(list); }槽函數slotShow()實現了顯示目錄dir下的所有文件,具體內容如下:
void FileView::slotShow(QDir dir) { QStringList string; string<<"*"; QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir:: DirsFirst); //QDir的entry InfoList()方法是按照某 種過濾方式獲得目錄下的文件列表 showFileInfoList(list); }其中,QDir::Filter定義了一系列的過濾方式,如圖所示:
QDir::SortFlag定義了一系列排序方式,具體如圖所示:
函數showFileInfoList()實現了用戶可以雙擊瀏覽器中顯示的目錄進入下一級目錄,或單擊“…”返回 上一級目錄,頂部的編輯框顯示當前所在的目錄路徑,列表中顯示該目錄下的所有文件。其具體代碼 如下:
槽函數slotDirShow()根據用戶的選擇顯示下一級目錄的所有文件。其具體實現代碼如下:
void FileView::slotDirShow(QListWidgetItem * item) { QString str=item->text(); //將下一級的目錄名保存在str中 QDir dir; //定義一個QDir對象 dir.setPath(fileLineEdit->text()); //設置QDir對象的路徑為當前目錄路徑 dir.cd(str) //根據下一級目錄名重新設置QDir對象的路徑 fileLineEdit->setText(dir.absolutePath()); slotShow(dir); //顯示當前目錄下的所有文件 }運行結果如圖所示:
總結
以上是生活随笔為你收集整理的QT学习:目录操作与文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT学习:读写二进制文件
- 下一篇: QT学习:获取文件详细信息