我的應用程序基於QML
我使用Camera
和CameraCapture
從相機捕捉圖像。捕獲後,我想將捕獲的圖像存儲在CameraCapture.captureToLocation()
的應用程序數據文件夾中。但我不知道如何獲得這個文件夾的路徑。所以我的問題 - 我怎樣才能獲得路徑到應用程序文件夾機智寫權限? Qt有辦法得到它嗎?它應該是系統指定的文件夾,我猜。例如在Android中,它應該是/ data/data/AppName。正如我所見,LocalStorage在一些類似的地方創建了它的文件。QML數據文件夾
QML數據文件夾
回答
/data/data/AppName
不QStandardPaths映射,但我認爲這將是更好的使用這一個:
QStandardPaths :: AppDataLocation 17返回將持久應用程序數據可以存儲在目錄位置。這是一個特定於應用程序的目錄。要獲取存儲要與其他應用程序共享的數據的路徑,請使用QStandardPaths :: GenericDataLocation。返回的路徑永遠不會爲空。在Windows操作系統上,這將返回漫遊路徑。這個枚舉值被添加到Qt 5.4中。
或這一個早期版本:
QStandardPaths :: DataLocation 9返回相同的值AppLocalDataLocation。此枚舉值已棄用。最好使用AppDataLocation,因爲在Windows上建議使用漫遊路徑。
這些將在Android上設置爲DataLocation "<APPROOT>/files", "<USER>/<APPNAME>/files"
。
但請注意,從5.4開始,後者已被棄用,如文件記錄。您可以設置它會出現follows:
的QString QStandardPaths :: writableLocation(StandardLocation中類型)
返回將類型的文件應寫入的目錄,或一個空字符串,如果無法確定位置。
注意:返回的存儲位置可以是不存在的目錄;即,它可能需要由系統或用戶創建。
所以,你會寫是這樣的:
QString dataPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
// Do not need to check against empty string for this value as per documentatio
CameraCapture.captureToLocation(dataPath);
注:請不要使用QStandardPaths::ApplicationsLocation
此目的,因爲那就是非專用位置。此外,它甚至不支持在Android:
ApplicationsLocation(不支持目錄不可讀)
如果你想分享整個應用程序的圖像,你需要稍作調整,用這個上面的代碼。當我想你想上面的一個,這是一個有點不清楚你想要哪一個,所以我提兩個:
StandardPaths :: GenericDataLocation 11返回將在應用程序之間共享持久性數據可以存儲在目錄位置。這是一個通用的價值。返回的路徑永遠不會爲空。
這設置爲Android的GenericDataLocation "<USER>"
。在類文檔中提到了精確的映射,您只需向下滾動到表格即可。由於該部分沒有固定鏈接,因此我無法提供直接網址。你也可以檢查你自己,哪個最適合你。
您可以使用QStandardPaths
指定一個可寫位置:
QString path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) ;
這裏QStandardPaths::GenericDataLocation
返回在其中應用程序之間共享持久性數據可以存儲在目錄中的位置,這是從來沒有空。
也有可能使用QStandardPaths::ApplicationsLocation
或許多其他可以找到here。你可以在C++端實現一個函數,並在你的QML中使用它來獲得標準位置。
- 1. Qt Creator不顯示QML文件夾
- 2. 複製數據庫文件夾到數據庫文件夾
- 3. QML FolderListModel過濾掉文件並僅顯示文件夾
- 4. 刪除/數據/數據文件夾
- 5. 如何從資源文件夾數據庫複製到數據庫文件夾
- 6. 如何在數據庫中實現文件夾,子文件夾
- 7. 根據文件數量將文件從文件夾移動到新文件夾
- 8. 2個QML文件
- 9. 包含QML文件中的另一個QML文件
- 10. QML:不能看到我已創建QML/test.qml文件QML
- 11. 根據CSV數據將文件夾移動到另一個文件夾
- 12. 如何檢查qml中的現有文件夾?
- 13. Qt5 QML將資源整理到文件夾
- 14. 如何從QML中的UNC路徑設置FileDialog的文件夾?
- 15. 如何從文件夾和子文件夾中提取數據文件
- 16. 文件和文件夾數
- 17. 根據元數據搜索文件的文件夾結構
- 18. 無法訪問android /數據文件夾
- 19. 訪問數據庫文件夾
- 20. MediaStore.Audio.Media.EXTERNAL_CONTENT_URI不掃描數據文件夾內
- 21. asp.net在文件夾中組織數據
- 22. MySQL的數據文件夾權限
- 23. Web SQL數據庫文件夾
- 24. setuptools:包數據文件夾位置
- 25. 導入舊的mysql數據文件夾
- 26. 從Assts文件夾升級數據庫
- 27. 找不到MySQL數據庫文件夾
- 28. 加速熱文件夾數據上傳
- 29. hybris - 複製數據文件夾
- 30. 複製MYSQL數據庫文件夾
一如既往的好回答,lpapp,謝謝。加上我的兩分錢,個人而言,我發現自己對「下載位置」非常舒服。它在桌面和移動設備上可以回溯到「文件」,我的用戶感覺非常直觀,可以連接移動設備並從其子目錄中獲取文件。無論如何,我想我必須查看'GenericDataLocation'。 – BaCaRoZzo 2014-12-07 10:39:22
首先,感謝@lpapp這樣的詳細解答。我需要爲應用程序指定的數據路徑。所以我尋找了一些跨平臺的解決方案,至少它應該可以在Windows,Linux和Android上運行。我測試過GenericDataLocation,它指向系統數據文件夾,所以我只是將應用程序名稱添加到這個路徑。當然,我創建了這個文件夾。 – folibis 2014-12-07 12:21:28
@folibis:我建議再次閱讀文檔。 'GenericDataLocation'不是你想要的基於你的問題和這個評論。你說你需要應用程序數據,那就是(應用程序)DataLocation。從GenericDataLocation'自己構建完全沒有意義。我覺得你很困惑。 – lpapp 2014-12-07 12:25:29