// header file
#ifndef MYAPP_H
#define MYAPP_H
#include <QtGui/QDialog>
#include <QtCore/QList>
class model;
class QString;
class DLG : public QDialog
{
Q_OBJECT
public:
DLG(model &mod, const QString &name);
virtual ~DLG(){}
public slots:
void onOk();
private:
model &m_mod;
};
class model
{
public:
model();
virtual ~model();
void onDlgOk();
void letUsGo();
private:
QList<DLG *> m_dlgs;
int m_cnt;
};
#endif
// cpp
#include "myApp.h"
#include <QtGui/QPushButton>
#include <QtCore/QtAlgorithms>
#include <QtGui/QApplication>
#include <QtCore/QString>
#include <QtCore/QStringList>
DLG::DLG(model &mod, const QString &name) : m_mod(mod)
{
QPushButton *btn = new QPushButton("OK", this);
connect(btn, SIGNAL(clicked()), this, SLOT(onOk()));
setWindowTitle(name);
}
void DLG::onOk()
{
accept();
m_mod.onDlgOk();
}
model::model() : m_cnt(0)
{
for (int i = 0; i < 3; ++i)
{
QString name;
name.setNum(i);
DLG *ptr = new DLG(*this, name);
m_dlgs << ptr;
}
}
model::~model()
{
qDeleteAll(m_dlgs);
}
void model::letUsGo()
{
if (!m_dlgs.isEmpty())
m_dlgs[0]->show();
}
void model::onDlgOk()
{
++m_cnt;
if (m_cnt < m_dlgs.count())
m_dlgs[m_cnt]->show();
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
model mod;
mod.letUsGo();
return app.exec();
}