Qt C++ 使 QSqlDatabase 内部静态 class

Qt C++ Make QSqlDatabase static inside class

我正在尝试为我的 class.

的所有实例实施单个 QSqlDatabase 实例
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>

class MyClass
{
    static QSqlDatabase db;
};

QSqlDatabase MyClass::db = QSqlDatabase::addDatabase("QSQLITE");

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    return a.exec();
}

但是这段代码在发布模式下似乎不起作用:

QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

Screen (error)
我已经使用windeployqt.exe构建了独立的Release版本。

在调试中这有效,因为 sqldriver 直接从 Qt 目录加载。当我试图将其释放时,它毫无意义。

QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

因此您不能在全局级别加载 sql 插件。只是不要尝试使它成为 "static inside class",而是使其成为 "static inside static method",就像在典型的单例模式中一样。有点,

class MyClass
{
    static QSqlDatabase& get_db();
};

QSqlDatabase& MyClass::get_db()
{
    static QSqlDatabase db;
    if (!db.isValid())
        db = QSqlDatabase::addDatabase("QSQLITE");
    return db;
}