所谓单例模式就是只能构造一个对象。将构造函数私有化。
头文件中:
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
signals:
void G_sndCtrlMsg(CtrlDlg::ctrl);
private:
Ui::CtrlDlg *ui;
QString m_msg;
//将构造函数私有化
explicit CtrlDlg(QWidget *parent = 0);
public:
QString getText();
void setText(QString);
void setCurrRadio();
//静态成员函数
static CtrlDlg * instance(QWidget *parent = 0);
//静态成员变量
static CtrlDlg *obDlg;
cpp文件中
#include "ctrldlg.h"
#include "ui_ctrldlg.h"
//静态成员变量初始化
CtrlDlg * CtrlDlg::obDlg = NULL;
CtrlDlg::CtrlDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::CtrlDlg)
{
ui->setupUi(this);
}
//使用静态成员函数instance构建对象
CtrlDlg* CtrlDlg::instance(QWidget *parent)
{
//如果静态成员变量为空,构建对象,否则返回静态成员变量
if(!obDlg)
obDlg = new CtrlDlg(parent);
return obDlg;
}
实际应用:
connect(CtrlDlg::instance(this),SIGNAL(G_sndCtrlMsg(CtrlDlg::ctrl)),manager2,SLOT(S_fileCtrl(CtrlDlg::ctrl)));