Qt獲取選擇的文件夾和文件路徑


獲取文件夾路徑
static QString getExistingDirectory(QWidget *parent = Q_NULLPTR,
                                    const QString &caption = QString(),
                                    const QString &dir = QString(),
                                    Options options = ShowDirsOnly);
參數1:父窗口
參數2:彈出界面的菜單欄文字 
參數3:打開的初始目錄 比如“/”表示根目錄

使用方法

void Widget::on_openSrcDirPushButton_clicked()
{
    //文件夾路徑
    srcDirPath = QFileDialog::getExistingDirectory(
               this, "choose src Directory",
                "/");

    if (srcDirPath.isEmpty())
    {
        return;
    }
    else
    {
        qDebug() << "srcDirPath=" << srcDirPath;
        srcDirPath += "/";
    }
}

注意:
qDebug() << "srcDirPath=" << srcDirPath;輸入我們打開目錄的路徑,比如:/mnt/hgfs,這時候如果我們要讀取這個目錄下的文件,此時路徑應為這里寫代碼片/mnt/hgfs/然后加上文件名才是文件的全路徑。不過或許大家用不到srcDirPath += “/”;`這一句。

獲取文件路徑(選擇文件):

獲取文件路徑使用getOpenFileName即可。使用方法和getExistingDirectory類似。

static QString getOpenFileName(QWidget *parent = Q_NULLPTR,
                               const QString &caption = QString(),
                               const QString &dir = QString(),
                               const QString &filter = QString(),
                               QString *selectedFilter = Q_NULLPTR,
                               Options options = Options());
參數1:父窗口
參數2:彈出界面的菜單欄文字 
參數3:打開的初始目錄 比如“/”表示根目錄  
參數4:設置打開的文件類型   
參數5:看代碼。。。

使用方法:

void Widget::slotBtnClick()
{
    QString s = QFileDialog::getOpenFileName(
                this, "選擇要播放的文件",
                "/",
                "視頻文件 (*.flv *.rmvb *.avi *.mp4);; 所有文件 (*.*);; ");
    qDebug() << "path=" << s;
    if (!s.isEmpty())
    {

    }
}

另外的方法:

QString file_full, file_name, file_path;  
QFileInfo fi;  
  
file_full = QFileDialog::getOpenFileName(this);  
  
fi = QFileInfo(file_full);  
file_name = fi.fileName();  
file_path = fi.absolutePath();
void monizhuzhan::filenameInDir()
{
    //判斷路徑是否存在
    QDir dir(path);
    if(!dir.exists())
        return;
 
    //查看路徑中后綴為.cfg格式的文件
    QStringList filters;
    filters<<QString("*.cfg");
    dir.setFilter(QDir::Files | QDir::NoSymLinks); //設置類型過濾器,只為文件格式
    dir.setNameFilters(filters);  //設置文件名稱過濾器,只為filters格式
 
    //統計cfg格式的文件個數
    int dir_count = dir.count();
    if(dir_count <= 0)
        return;
 
//  //測試
//  //文件路徑及名稱
//  QFile outFile( "filename.txt");
//  //看能否打開
//  if(!outFile.open(QIODevice::WriteOnly | QIODevice::Append))  
//      return ;  
//  QTextStream ts(&outFile);
 
    //存儲文件名稱
    QStringList string_list;
    for(int i=0; i<dir_count; i++)
    {
        QString file_name = dir[i];  //文件名稱
        //ts<<file_name<<"\r\n"<<"\r\n";
        string_list.append(file_name);
    }
 
}

其中注釋部分可實現將文件名稱存入到txt中。

總體思路:得到路徑--去除路徑下的無效文件--統計個數--獲取文件名稱

【更多參考】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM