qt创建单例,并且调用
时间: 2024-01-20 13:03:50 浏览: 41
要创建一个单例,可以使用Qt中的Q_GLOBAL_STATIC宏定义。这个宏定义可以确保在全局范围内只有一个实例。
下面是一个示例代码:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QGlobalStatic>
class MySingleton
{
public:
static MySingleton& instance() {
static MySingleton s_instance;
return s_instance;
}
void sayHello() {
qDebug() << "Hello from MySingleton";
}
private:
MySingleton() {
qDebug() << "MySingleton constructed";
}
~MySingleton() {
qDebug() << "MySingleton destructed";
}
Q_DISABLE_COPY(MySingleton)
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MySingleton::instance().sayHello();
return a.exec();
}
```
在这个示例中,我们定义了一个MySingleton类,并且使用Q_GLOBAL_STATIC宏定义了一个全局静态变量s_mySingleton,这个变量的类型是MySingleton*。Q_GLOBAL_STATIC宏定义的第二个参数是MySingleton类的构造函数。
在main函数中,我们可以通过MySingleton::instance()来获取MySingleton的唯一实例,并调用它的sayHello()函数。
运行这个示例,可以看到输出:
```
MySingleton constructed
Hello from MySingleton
MySingleton destructed
```
这表明MySingleton只被构造和析构了一次,并且我们成功地创建了一个单例。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)