#include <QtGui>
#include <QDebug>
{
Q_OBJECT
public:
m_count = 0;
setCentralWidget(central);
connect(m_timer, SIGNAL(timeout()), this, SLOT(tick()));
m_timer->start(100);
}
public slots:
void tick() { central->display(m_count++); }
private:
int m_count;
};
Q_OBJECT
public:
m_winA = new Window();
m_winA->setWindowTitle("Window A");
m_winA->move(0,0);
m_winB = new Window();
m_winB->setWindowTitle("Window B");
m_winB->move(200,200);
connect(this, SIGNAL(signalA()), m_winA, SLOT(show()));
connect(this, SIGNAL(signalA()), m_winB, SLOT(hide()));
connect(this, SIGNAL(signalB()), m_winA, SLOT(hide()));
connect(this, SIGNAL(signalB()), m_winB, SLOT(show()));
m_winA->show();
m_winB->show();
// some fake incoming events
m_count = 0;
connect(m_timer, SIGNAL(timeout()), this, SLOT(incoming()));
m_timer->start(5000);
}
~Controller() {
delete m_winA;
delete m_winB;
}
public slots:
void incoming() {
if (m_count++ % 2 == 0)
emit signalA();
else
emit signalB();
}
signals:
void signalA();
void signalB();
private:
Window *m_winA;
Window *m_winB;
int m_count;
};
int main(int argc, char *argv[])
{
Controller c;
return app.exec();
}
#include "main.moc"
#include <QtGui>
#include <QDebug>
class Window: public QMainWindow
{
Q_OBJECT
public:
Window(QWidget *p = 0): QMainWindow(p) {
m_count = 0;
central = new QLCDNumber(this);
setCentralWidget(central);
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(tick()));
m_timer->start(100);
}
public slots:
void tick() { central->display(m_count++); }
private:
QLCDNumber *central;
QTimer *m_timer;
int m_count;
};
class Controller: public QObject {
Q_OBJECT
public:
Controller(QObject *parent = 0): QObject(parent) {
m_winA = new Window();
m_winA->setWindowTitle("Window A");
m_winA->move(0,0);
m_winB = new Window();
m_winB->setWindowTitle("Window B");
m_winB->move(200,200);
connect(this, SIGNAL(signalA()), m_winA, SLOT(show()));
connect(this, SIGNAL(signalA()), m_winB, SLOT(hide()));
connect(this, SIGNAL(signalB()), m_winA, SLOT(hide()));
connect(this, SIGNAL(signalB()), m_winB, SLOT(show()));
m_winA->show();
m_winB->show();
// some fake incoming events
m_count = 0;
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(incoming()));
m_timer->start(5000);
}
~Controller() {
delete m_winA;
delete m_winB;
}
public slots:
void incoming() {
if (m_count++ % 2 == 0)
emit signalA();
else
emit signalB();
}
signals:
void signalA();
void signalB();
private:
Window *m_winA;
Window *m_winB;
int m_count;
QTimer *m_timer;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Controller c;
return app.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks