1. 程式人生 > 其它 >qt通過QFileDialog獲取檔案路徑&儲存檔案&選擇資料夾

qt通過QFileDialog獲取檔案路徑&儲存檔案&選擇資料夾

1、獲取檔案路徑對話方塊

file_name = QFileDialog::getOpenFileName(self,"open file dialog","C:\Users\Administrator\Desktop","Txt files(*.txt)")  
##"open file Dialog "為檔案對話方塊的標題,第三個是開啟的預設路徑,第四個是檔案型別過濾器 

2、儲存檔案對話方塊

file_path =  QFileDialog::getSaveFileName(self,"save file","C:\Users\Administrator\Desktop" ,"xj3dp files (*.xj3dp);;all files(*.*)
") # file_path即為檔案即將儲存的絕對路徑。形參中的第二個為對話方塊標題,第三個為開啟後的預設給路徑,第四個為檔案型別過濾器

儲存檔案:

QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), "", tr("Curve TagName Files (*.TXT)"));
if (!fileName.isEmpty())
{
    //一些處理工作,寫資料到檔案中
    QList<QwtPlotCurve*>& plotCurves = m_plot->getPlotCurves();
    QFile file(fileName);
    
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) QMessageBox::critical(this, tr("Error"), tr("Failed to open file \"%1\" for save!").arg(fileName), QMessageBox::Ok); //write file QTextStream wr(&file); for(int i=0; i<plotCurves.count(); ++i) { wr <<plotCurves[i]->title().text() <<"
\n"; } file.close(); } else return;

3、選擇資料夾對話方塊

dir_path=QFileDialog::getExistingDirectory(self,"choose directory","C:\Users\Administrator\Desktop") 
# dir_path即為選擇的資料夾的絕對路徑,第二形參為對話方塊標題,第三個為對話方塊開啟後預設的路徑。
以上返回的都是QString型別的物件,若想不出現編碼問題,建議用如下語句將QString轉換為python的string物件
str=unicode(your_path.toUtf8(), ‘utf-8‘, ‘ignore‘) 

根據指定資料夾找對應檔案:

QString fileName(tr("ok.txt")) ;  
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

    QDir d;
    d.mkpath(dir);//可以不用,因為路徑已經有了,就不用mk了
    QFile file(dir+"/"+fileName);
    file.open(QFile::WriteOnly);

另存為:

QString path;   
path = QDir::currentPath() + "/CscanData/Cscan.bmp";    
QString filename = QFileDialog::getSaveFileName(this, tr("Save As"), path, tr("Image Files (*.bmp)"));    
if(!filename.isNull())    
{        
    //一些處理工作,複製
    QFile::copy(path+ filename);   
}    
else    
    return;

參考連結:https://www.136.la/python/show-13717.html

     https://blog.csdn.net/bzhxuexi/article/details/10044037