qt当前工程相对路径_QT编程:(6)相对路径问题
QT編程:(6)相對路徑問題
功能需求:
(1)
單擊“打開工程文件”按鈕,彈出config文件夾對應的打開文件對話框,用戶可在當前對話框選擇所需工程文件。
(2)
用戶單擊“幫助”按鈕,程序利用系統工具直接打開:軟件使用說明文檔(*.pdf/*.txt等),供用戶瀏覽。
(3)
為完成用戶信息界面的初始化工作,需打開指定用戶信息文件,進行讀寫操作。
實現方法及效果:
(1)
打開工程文件——
代碼:
//在彈出的打開文件對話框中獲取所選中的工程文件名
QString fileName
= QFileDialog::getOpenFileName(this);
圖1
(2)
利用打開文件對話框(代碼同上),讓用戶自行尋找軟件使用說明文件,進而打開文件;
(3)
使用相對路徑:userInformation.txt,程序運行出錯無法找到該文件;
只得使用絕對路徑:
//QFile file("D:/QT-APP/HLVolDevMonitor/config/userInformation.txt");//絕對路徑
問題描述:
為什么qt彈出的打開文件對話框指向的目錄文件是——
“D:\QT-APP\build-HLVolDevMonitor-Desktop_Qt_5_3_MinGW_32bit-Debug\”而不是像MFC-Project那樣為工程程序目錄?
Qt工程的相對路徑是什么?
思維延展:
談到相對路徑,需要注意區分進程所在“當前工作目錄”和“程序所在目錄”。
vs中工作目錄是在你所建工程的cpp元文件所在目錄中,而Debug和Release文件夾都在工程文件目錄中,作為子文件夾存在;
在Qt項目中,
Debug/Relese文件并不在工程cpp文件目錄下,而是作為工程同級文件存在。
故QT
Creator的工作目錄是在程序.exe文件的上一級目錄,即:
D:\QT-APP\build-HLVolDevMonitor-Desktop_Qt_5_3_MinGW_32bit-Debug\debug\HLVolDevMonitor.exe
所以,相對路徑是從當前工作目錄開始的。即:
D:\QT-APP\build-HLVolDevMonitor-Desktop_Qt_5_3_MinGW_32bit-Debug
在Qt中使用的方法——以打開程序當前目錄為例。這里要用到QProcess類中的靜態函數startDetached:
1.
QString?path=QDir::currentPath();//獲取程序當前工作目錄
2.
path.replace("/","\\");//將地址中的"/"替換為"\",因為在Windows下使用的是"\"
3.
QProcess::startDetached("explorer"+path);//打開上面獲取的目錄
解決辦法:
結合以上信息,首先:將所需用戶文件(userfiles)置于工程的當前工作路徑下:
D:\QT-APP\build-HLVolDevMonitor-Desktop_Qt_5_3_MinGW_32bit-Debug
圖2-1
圖2-2
其次:修改代碼——
(1)打開工程文件對話框:
//在指定文件夾目錄:打開文件對話框
QString path
= QDir::currentPath();//獲取程序當前目錄
//將地址中的"/"替換為"\",因為在Windows下使用的是"\"。
path.replace("/","\\");
//在所獲取的工作路徑后附加上工程文件所在config文件夾路徑
path
= path + tr("\\userfiles\\config");
//彈出config文件夾對應的打開文件對話框,獲取選擇打開的文件名
QString fileName
= QFileDialog::getOpenFileName(this,
tr("open
file"), path);
圖3
將軟件使用說明書、用戶信息文件等置于——Qt工程的當前工作路徑后,在函數中可直接使用相對路徑打開指定文件:
(2)使用系統工具瀏覽軟件說明文件:
QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("userfiles/軟件使用說明書.pdf").absoluteFilePath()));
(3)打開用戶信息文件進行讀寫操作:
QFile file(QFileInfo("userfiles/config/userInformation.txt").absoluteFilePath());
總結:
QT中可執行以下代碼來查詢:“當前工作路徑”和“程序所在路徑”:
qDebug()<
"<<:applicationdirpath>
qDebug()<
"<<:currentpath>
注意:對于Qt Creator所創建的工程,相對路徑從“當前工作路徑”開始。所以,在程序中直接引用相對路徑的文件均需放置于“當前工作路徑”下。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的qt当前工程相对路径_QT编程:(6)相对路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstrap3 商品列表_Boot
- 下一篇: c++ map是有序还是无序的_c++中