首页 > 解决方案 > 如果我不能将我的 SQLite 数据库放在我的 QT 应用程序中,我可以把它放在我的资源中吗?

问题描述

最近我试图将 SQLite 数据库放入我正在编写的 QT 5 应用程序中。我希望它是普遍可访问的——即在所有系统上,无论它安装在哪里。我把它作为资源然后发现显然你不能把数据库放在资源中,因为传递给 setDatabaseName 的数据库路径的字符串没有被翻译到资源系统,所以找不到数据库。

那么我可以把它放在哪里呢?我不想把它放在像 C:\repo.db 或 D:\repo.db 这样的驱动器的根目录下,因为很多人讨厌把根目录弄得乱七八糟的文件(比如我)。我打算将它放在源文件夹中并以“repo.db”或尝试“./resources/database/repo.db”的方式访问它,但即使是 QFile 也没有看到。我可以把它放在哪里以及如何在那里访问它?我的设置文件将在我的资源中,但我不确定是否可以更新该文件。我需要一个从应用程序安装在包括我自己在内的任何系统上的那一刻起就可用的地方,以便在编码和构建时都可以访问它。

我不是在征求意见 - 我想要一个不在根目录中的地方,一个通用的地方,比如安装目录(但我如何用代码找到它?)或设置目录(但我如何将它设置在某个地方,所以我以后能找到吗??)

标签: c++databasesqliteqtresources

解决方案


为此,Qt 提供了QStandardPaths返回平台特定标准路径的函数列表,例如桌面路径、临时目录等。对于您的特定情况,您可以将数据库放在与QStandardPaths::AppDataLocation键对应的目录中。


推荐阅读