要将类 CSQLite
改造成单例类,你可以使用懒汉式的单例模式。以下是对类进行改造的示例代码:
class CSQLite : public QObject {
Q_OBJECT
public:
static CSQLite* getInstance() {
static CSQLite instance;
return &instance;
}
void setItemName(QString strItemName);
bool connectDB();
private:
explicit CSQLite(QObject *parent = nullptr);
~CSQLite();
};
// 在 cpp 文件中实现私有构造函数和析构函数
CSQLite::CSQLite(QObject *parent) : QObject(parent) {}
CSQLite::~CSQLite() {}
void CSQLite::setItemName(QString strItemName) {
// 设置项目名称的逻辑
}
bool CSQLite::connectDB() {
// 连接数据库的逻辑
}
在这个改造后的类中,构造函数和析构函数都是私有的,只能通过静态方法 getInstance()
获取单例对象。每次调用 getInstance()
都会返回同一个唯一实例。
这样,你就可以通过 CSQLite::getInstance()
来获取 CSQLite
类的唯一实例,并且可以在任何地方调用该实例的公共方法。
注意:在使用 Qt 的信号槽机制时,请确保将 QObject
子类定义为单例类时正确连接和断开信号槽,以避免对象生命周期不匹配导致的错误。
内容由零声教学AI助手提供,问题来源于学员提问