獲取文件夾路徑
1 static QString getExistingDirectory(QWidget *parent = Q_NULLPTR, 2 const QString &caption = QString(), 3 const QString &dir = QString(), 4 Options options = ShowDirsOnly); 5 參數1:父窗口 6 參數2:彈出界面的菜單欄文字 7 參數3:打開的初始目錄 比如“/”表示根目錄
使用方法
1 void Widget::on_openSrcDirPushButton_clicked() 2 { 3 //文件夾路徑
4 srcDirPath = QFileDialog::getExistingDirectory( 5 this, "choose src Directory", 6 "/"); 7
8 if (srcDirPath.isEmpty()) 9 { 10 return; 11 } 12 else
13 { 14 qDebug() << "srcDirPath=" << srcDirPath; 15 srcDirPath += "/"; 16 } 17 }
注意:
qDebug() << "srcDirPath=" << srcDirPath;輸入我們打開目錄的路徑,比如:/mnt/hgfs,這時候如果我們要讀取這個目錄下的文件,此時路徑應為這里寫代碼片/mnt/hgfs/然后加上文件名才是文件的全路徑。不過或許大家用不到srcDirPath += “/”;`這一句。
獲取文件路徑(選擇文件):
獲取文件路徑使用getOpenFileName即可。使用方法和getExistingDirectory類似。
1 static QString getOpenFileName(QWidget *parent = Q_NULLPTR, 2 const QString &caption = QString(), 3 const QString &dir = QString(), 4 const QString &filter = QString(), 5 QString *selectedFilter = Q_NULLPTR, 6 Options options = Options()); 7 參數1:父窗口 8 參數2:彈出界面的菜單欄文字 9 參數3:打開的初始目錄 比如“/”表示根目錄 10 參數4:設置打開的文件類型 11 參數5:看代碼。。。
使用方法:
1 void Widget::slotBtnClick() 2 { 3 QString s = QFileDialog::getOpenFileName( 4 this, "選擇要播放的文件", 5 "/", 6 "視頻文件 (*.flv *.rmvb *.avi *.mp4);; 所有文件 (*.*);; "); 7 qDebug() << "path=" << s; 8 if (!s.isEmpty()) 9 { 10
11 } 12 }
另外的方法:
1 QString file_full, file_name, file_path; 2 QFileInfo fi; 3
4 file_full = QFileDialog::getOpenFileName(this); 5
6 fi = QFileInfo(file_full); 7 file_name = fi.fileName(); 8 file_path = fi.absolutePath();
1 void monizhuzhan::filenameInDir() 2 { 3 //判斷路徑是否存在
4 QDir dir(path); 5 if(!dir.exists()) 6 return; 7
8 //查看路徑中后綴為.cfg格式的文件
9 QStringList filters; 10 filters<<QString("*.cfg"); 11 dir.setFilter(QDir::Files | QDir::NoSymLinks); //設置類型過濾器,只為文件格式
12 dir.setNameFilters(filters); //設置文件名稱過濾器,只為filters格式 13
14 //統計cfg格式的文件個數
15 int dir_count = dir.count(); 16 if(dir_count <= 0) 17 return; 18
19 // //測試 20 // //文件路徑及名稱 21 // QFile outFile( "filename.txt"); 22 // //看能否打開 23 // if(!outFile.open(QIODevice::WriteOnly | QIODevice::Append)) 24 // return ; 25 // QTextStream ts(&outFile); 26
27 //存儲文件名稱
28 QStringList string_list; 29 for(int i=0; i<dir_count; i++) 30 { 31 QString file_name = dir[i]; //文件名稱 32 //ts<<file_name<<"\r\n"<<"\r\n";
33 string_list.append(file_name); 34 } 35
36 }
其中注釋部分可實現將文件名稱存入到txt中。
總體思路:得到路徑--去除路徑下的無效文件--統計個數--獲取文件名稱