[AssistantTool]_5_添加配置界面,使用单例模式

Posted 暮色1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[AssistantTool]_5_添加配置界面,使用单例模式相关的知识,希望对你有一定的参考价值。

[AssistantTool]_5_添加配置界面,使用单例模式

创建时间:20200525 23:35:58

  • 使用单例模式,由于需要使用ui,所以这里没有将SettingForm构造函数私有化。需要使用的时候进行注意使用instances获取实例。
  • 如果界面已经由ui加载了, 这里会直接将this赋值给inst. instances中不会在new SettingForm();

界面

代码

  • 头文件
#ifndef SETTINGFORM_H
#define SETTINGFORM_H

#include <QWidget>
#include <QString>

namespace Ui {
class SettingForm;
}

class SettingForm : public QWidget
{
    Q_OBJECT

public:
    explicit SettingForm(QWidget *parent = nullptr);
    ~SettingForm();
    static SettingForm *instances();
    QString version;

private:
    Ui::SettingForm *ui;
};

#endif // SETTINGFORM_H

  • 源文件
#include "settingform.h"
#include "ui_settingform.h"
#include <QDebug>

static SettingForm *inst = nullptr;

SettingForm::SettingForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SettingForm)
{
    ui->setupUi(this);
    version = ui->label_version->text();
    inst = this;
}

SettingForm::~SettingForm()
{
    delete ui;
    if( inst != this && inst != nullptr )
    {
        delete inst;
    }
}



SettingForm *SettingForm::instances()
{
    qDebug() << "getSetting";
    if( inst == nullptr )
    {
        qDebug() << "inst is null, and new SettingForm()";
        inst = new SettingForm();
    }
    return inst;
}

使用

  • 使用instances获取SettingForm的实例。
#include "settingform.h"
SettingForm *sett = SettingForm::instances();
qDebug() << sett->version;

以上是关于[AssistantTool]_5_添加配置界面,使用单例模式的主要内容,如果未能解决你的问题,请参考以下文章

[AssistantTool]_5_添加配置界面,使用单例模式

[AssistantTool]_3_添加TAB示例

[AssistantTool]_3_添加TAB示例

[AssistantTool]_11_添加asc解析并显示波形

[AssistantTool]_11_添加asc解析并显示波形

[AssistantTool]_11_添加asc解析并显示波形