qt 创建单例 .h .cpp形式 继承Qobject
时间: 2024-03-26 22:40:37 浏览: 177
好的,下面是一个继承自QObject的单例模式实现示例(以类名为Singleton为例):
Singleton.h文件:
```cpp
#ifndef SINGLETON_H
#define SINGLETON_H
#include <QObject>
class Singleton : public QObject {
Q_OBJECT
public:
static Singleton& getInstance();
private:
Singleton(QObject* parent = nullptr); // 构造函数私有化
Singleton(const Singleton&); // 拷贝构造函数私有化
Singleton& operator=(const Singleton&); // 赋值运算符私有化
~Singleton(); // 析构函数私有化
};
#endif // SINGLETON_H
```
Singleton.cpp文件:
```cpp
#include "Singleton.h"
Singleton& Singleton::getInstance() {
static Singleton instance;
return instance;
}
Singleton::Singleton(QObject* parent) : QObject(parent) {
// TODO: 对象初始化
}
Singleton::~Singleton() {
// TODO: 对象销毁
}
```
在上述示例中,我们继承自QObject,并使用Q_OBJECT宏来启用Qt的元对象系统。同时,在构造函数中,我们可以将父对象parent传递给QObject的构造函数,以确保在父对象销毁时,子对象也会被销毁。
需要注意的是,由于QObject的拷贝构造函数和赋值运算符被删除,因此我们也需要显式地将Singleton的拷贝构造函数和赋值运算符删除,以确保该类只能创建一个对象。
最后,在getInstance()静态方法中,我们使用局部静态变量来确保Singleton实例的唯一性,并返回该实例的引用。
阅读全文