日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 程序获取各种文件路径方法

發布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 程序获取各种文件路径方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt 程序獲取程序所在路徑、用戶目錄路徑、臨時文件夾等特殊路徑的方法

經常我們的程序中需要訪問一些特殊的路徑,比如程序所在的路徑、用戶目錄路徑、臨時文件夾等。在 Qt 中實現這幾個功能所用的方法雖然都不難,但是各不相同,每次用到時還要現去查,很不方便。因此就寫了這篇博客,把這幾種需求的實現方式總結了一下。算是個備忘錄吧。

程序所在路徑

獲取程序所在路徑,QCoreApplication 類里就實現了相關的功能:

QString QCoreApplication::applicationDirPath()

比如我們有一個程序在:

C:/Qt/examples/tools/regexp/regexp.exe

那么 qApp->applicationDirPath() 的結果是:

C:/Qt/examples/tools/regexp

如果除了程序所在路徑,我們還想要程序的完整名稱。那么可以這么寫:

qApp->applicationFilePath()

還是上面的例子,結果是:

C:/Qt/examples/tools/regexp/regexp.exe

當前工作目錄

QDir 提供了一個靜態函數 currentPath() 可以獲取當前工作目錄,函數原型如下:

QString QDir::currentPath()

如果我們是雙擊一個程序運行的,那么程序的工作目錄就是程序所在目錄。

如果是在命令行下運行一個程序,那么運行程序時在命令行的哪個目錄,那個目錄就是當前目錄。

用戶目錄路徑

Qt 4 中的方法。下面的方法只對 Qt 4 有效,Qt 5 已經刪除了 storageLocation() 方法。

QDesktopServices::storageLocation(QDesktopServices::HomeLocation);
  • ?

Qt 5 中引入的方法。

QStandardPaths::writableLocation(QStandardPaths::HomeLocation);

或者

QStandardPaths::standardLocations(QStandardPaths::HomeLocation);

這兩個方法的區別是 standardLocations() 返回值是 QStringList。當然對于 HomeLocation 來說這個 QStringList 中只有一個 QString。

還有另外一種方法,利用 QDir 類的一個靜態函數:

QDir::homePath();

我的文檔路徑

Qt 4 中的方法。下面的方法只對 Qt 4 有效,Qt 5 已經刪除了 storageLocation() 方法。

QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);

Qt 5 中引入的方法。

QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);

桌面路徑

Qt 4 中的方法。下面的方法只對 Qt 4 有效,Qt 5 已經刪除了 storageLocation() 方法。

QDesktopServices::storageLocation(QDesktopServices::DesktopLocation);

Qt 5 中引入的方法。

QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);

程序數據存放路徑

通常我們會將程序所需的一些數據存入注冊表。但是有時需要存儲的數據太多,放在注冊表中就不適合了。這時我們就要找個專門的地方來放數據。以前我喜歡將數據直接放到程序所在目錄,但是后來發現我的程序運行時經常沒有權限對這個目錄下的文件進行寫操作。后來發現其實 Qt 早就替我們考慮過這些問題了。

Qt 4 中的方法。下面的方法只對 Qt 4 有效,Qt 5 已經刪除了 storageLocation() 方法。

QDesktopServices::storageLocation(QDesktopServices::DataLocation);

Qt 5 中引入的方法。

QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);

Qt 5.5 中引入了另一種方法:

QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);

這個方法一般來說和上面的方法得到的結果是相同的。按照 Qt 幫助文檔的解釋,這個方法可以確保返回的路徑非空。所以我認為應該優先選用這個方法。

臨時文件路徑

Qt 4 中的方法。下面的方法只對 Qt 4 有效,Qt 5 已經刪除了 storageLocation() 方法。

QDesktopServices::storageLocation(QDesktopServices::TempLocation);

Qt 5 中引入的方法。

QStandardPaths::writableLocation(QStandardPaths::TempLocation); QStandardPaths::standardLocations(QStandardPaths::TempLocation);

更傳統的方法是利用 QDir 的一個靜態函數 tempPath()。

QDir::tempPath();

在這個目錄下生成臨時文件和臨時目錄需要用到另外兩個類: QTemporaryFile 和 QTemporaryDir。就不展開介紹了,大家可以參考 qt 的幫助文檔。

至此,常用的各種特殊路徑就介紹的差不多了。剩下還有些不常用的,可以參考 QStandardPaths 類的介紹。

總結

以上是生活随笔為你收集整理的Qt 程序获取各种文件路径方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。