如何设置数据库名称而不在Qt Creator

时间:2015-11-28 02:35:08

标签: c++ qt sqlite

我对Qt比较新,但我刚完成了第一个项目计划。我有一个.sqlite文件,我打开这样做:

 db = QSqlDatabase::addDatabase("QSQLITE");
 db.setDatabaseName("/Users/.../.../Code/Database/AIOCS.sqlite"); //shortened for clarity

我需要将这个程序发送给我的教授,但很明显,如果程序试图编译,数据库就不会打开,因为路径错误。我试图运行应用程序,而无需在代码中指定文件路径。有没有办法将文件放在本地目录中,我只需要指定文件名。类似的东西:

db.setDatabaseName("AIOCS.sqlite");

例如,如果我在mac上运行我的程序,我将不得不使用:

db.setDatabaseName("/Users/.../.../Code/Database/AIOCS.sqlite"); //shortened for clarity

但是,在PC上它将是

db.setDatabaseName("C:\\User\\...\\Code\\Database\\AIOCS.sqlite"); //shortened for clarity

有没有办法只使用文件名,这样程序就可以在任何机器上运行而无需更改代码。

1 个答案:

答案 0 :(得分:0)

您可以使用Qt OS特定的宏来解决此问题。例如,

#if defined(Q_OS_MAC)
    QString prefix = "/Users/.../.../Code/Database/";
#elif defined(Q_OS_WIN)
    QString prefix = "C:\\User\\...\\Code\\Database\\";
#endif

db.setDatabaseName(prefix + "AIOCS.sqlite");

然后,当您在Win / Mac计算机上编译源代码时,您不需要更改值。