簡體   English   中英

如果我不能把我的 SQLite 數據庫放在我的資源中,我可以把它放在我的 QT 應用程序中的什么位置?

[英]Where can I put my SQLite database in my QT application if I can't put it in my resources?

最近我試圖將 SQLite 數據庫放入我正在編寫的 QT 5 應用程序中。 我希望它可以普遍訪問 - 無論它安裝在哪里,都可以在所有系統上使用。 我把它作為資源然后發現顯然你不能把數據庫放在資源中,因為傳遞給 setDatabaseName 的數據庫路徑的字符串沒有被轉換到資源系統,所以找不到數據庫。

那么我可以把它放在哪里呢? 我不想把它像 C:\\repo.db 或 D:\\repo.db 一樣放在驅動器的根目錄下,因為很多人討厭文件弄亂他們的根目錄(像我一樣)。 我打算把它放在源文件夾中,並以“repo.db”或我試過的“./resources/database/repo.db”的形式訪問它,但即使是QFile也沒有看到。 我可以把它放在哪里以及如何訪問它? 我的設置文件將在我的資源中,但我不確定當時是否可以更新該文件。 我需要一個位置,從應用程序安裝到任何系統(包括我自己的系統)的那一刻起,它就可以使用,以便在編碼和構建時都可以訪問它。

我不是在征求意見——我想要一個不在根目錄中的地方,一個像安裝目錄這樣通用的地方(但我如何用代碼找到它?)或一個設置目錄(但我如何在某處設置它,所以我以后能找到嗎??)

為此,Qt 提供了一個QStandardPaths函數列表,這些函數返回平台特定的標准路徑,例如桌面路徑、臨時目錄等。對於您的特定情況,您可以將數據庫放在與QStandardPaths::AppDataLocation鍵對應的目錄中。

您可以使用 QSettings 來保存路徑、設置並恢復它們。

QSettings m_Arhive("Company", "app_name");
//Set DB path
m_Arhive.setValue("DBPath", "c:/somewhere/database");
//Get DB path
m_Arhive.value("DBPath").toString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM