Qt C ++使QSqlDatabase在类内部静态

时间:2019-02-08 19:34:07

标签: c++ qt class qsqldatabase

我正在尝试为我的类的所有实例实现一个viewDidLoad实例。

QSqlDatabase

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

QSqlDatabase:加载驱动程序插件需要QCoreApplication实例

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

这在Debug中行得通,因为sqldriver直接从Qt目录加载。当我试图将其发布时,这没有任何意义。

1 个答案:

答案 0 :(得分:0)

  

QSqlDatabase:加载驱动程序插件需要QCoreApplication实例

因此,您不允许在全局级别加载sql插件。只是不要尝试使其成为“类内静态”,而是使其成为“类内静态方法”,就像典型的单例模式一样。

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

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