以数据库单例类为例:
mandb.h
#ifndef MANDB_H
#define MANDB_H
#include <QObject>
//定义一个宏来简化代码 以后使用的时候直接用DB->
#define DB ManDB::instance()
class ManDB : public QObject
{
Q_OBJECT
public:
//不要使用ManDB()构造函数创建对象
//通常单例模式构造函数要声明为private,但是使用Qt的宏则不能
explicit ManDB(QObject *parent = nullptr);
static ManDB* instance();
signals:
public slots:
};
#endif // MANDB_H
mandb.cpp
#include "mandb.h"
//使用宏来实现单例模式
Q_GLOBAL_STATIC(ManDB,ins)
ManDB::ManDB(QObject *parent) : QObject(parent)
{
}
ManDB *ManDB::instance()
{
return ins();
}