public static ListViewForm GetInstance if listViewForm == null lock lockGetInstance if listViewForm == null
在Qt中,可以使用单例模式来实现类似的功能。
首先,在ListViewForm类的头文件中声明一个静态的实例指针和一个私有的构造函数和析构函数:
class ListViewForm : public QWidget
{
Q_OBJECT
public:
static ListViewForm* GetInstance();
private:
ListViewForm(QWidget* parent = nullptr);
~ListViewForm();
static ListViewForm* instance;
};
然后,在ListViewForm类的实现文件中定义静态的实例指针,并在GetInstance()函数中实现单例模式的逻辑:
ListViewForm* ListViewForm::instance = nullptr;
ListViewForm::ListViewForm(QWidget* parent)
: QWidget(parent)
{
// 初始化界面和其他成员变量
}
ListViewForm::~ListViewForm()
{
// 释放资源
}
ListViewForm* ListViewForm::GetInstance()
{
if (instance == nullptr)
{
static QMutex mutex;
QMutexLocker locker(&mutex);
if (instance == nullptr)
{
instance = new ListViewForm();
}
}
return instance;
}
现在,你可以在其他类中调用ListViewForm::GetInstance()来获取ListViewForm的单例实例。例如:
ListViewForm* listViewForm = ListViewForm::GetInstance();
listViewForm->show();
这样就可以保证ListViewForm的单例实例只会被创建一次,并且在多线程环境下也能安全地使用
原文地址: https://www.cveoy.top/t/topic/h64u 著作权归作者所有。请勿转载和采集!