【发布时间】:2015-02-15 08:31:59
【问题描述】:
我正在尝试在 Qt 中编写一个具有单例设计的简单应用程序。下面是头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
static MainWindow *getInstance();
~MainWindow();
private:
explicit MainWindow(QWidget *parent = 0);
static MainWindow *uniqueInstance;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
这是实现文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow* MainWindow::uniqueInstance = new MainWindow();
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
MainWindow* MainWindow::getInstance()
{
return uniqueInstance;
}
最后是main函数:
#include <QApplication>
#include "mainwindow.h"
#include "QThread"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow *w = MainWindow::getInstance();
w->show();
return a.exec();
}
我的程序的构建是好的。但是我收到一个运行时错误“QWidget:必须在 QWidget 之前构造一个 QApplication”。我应该怎么做才能解决这个问题?我想用这种形式的单例来做一个线程安全的程序。
提前感谢您的帮助。
雷扎
【问题讨论】:
标签: c++ qt singleton static-members