#include <QtGui>
#include <QtWidgets>
#include <QApplication>
{
Q_OBJECT
public:
explicit Graph
(QWidget * parent
= 0) , mCount(0)
{
if(mTimer.interval() != mInterval)
mTimer.setInterval(mInterval);
connect(startButton, SIGNAL(clicked()), this, SLOT(startUpdateTimer()));
connect(stopButton, SIGNAL(clicked()), this, SLOT(stopUpdateTimer()));
connect(&mTimer, SIGNAL(timeout()), this, SLOT(updateGraph()));
mGridLayout->addWidget(mLabel, 0, 0, 1, 2);
mGridLayout->addWidget(startButton, 1, 0, 1, 1);
mGridLayout->addWidget(stopButton, 1, 1, 1, 1);
}
public slots:
void startUpdateTimer(int interval = mInterval)
{
if(mTimer.interval() != interval)
mTimer.setInterval(interval);
mCount = 0;
mTimer.start();
}
void stopUpdateTimer(void)
{
mTimer.stop();
}
virtual void updateGraph(void) = 0;
protected:
int mCount;
private:
static const int mInterval = 1000;
};
class GraphLine : public Graph
{
Q_OBJECT
public:
explicit GraphLine
(QWidget * parent
= 0) : Graph(parent)
{
setWindowTitle("GraphLine");
}
public slots:
virtual void updateGraph(void)
{
qDebug() << str;
mLabel->setText(str);
}
};
class GraphHistogram : public Graph
{
Q_OBJECT
public:
explicit GraphHistogram
(QWidget * parent
= 0) : Graph(parent)
{
setWindowTitle("GraphHistogram");
}
public slots:
virtual void updateGraph(void)
{
QString str
= QString("GraphHistogram::updateGraph(): %1").
arg(mCount
++);
qDebug() << str;
mLabel->setText(str);
}
};
int main(int argc, char *argv[])
{
GraphLine g1;
g1.show();
GraphHistogram g2;
g2.show();
return app.exec();
}
#include "main.moc"
#include <QtGui>
#include <QtWidgets>
#include <QApplication>
class Graph : public QWidget
{
Q_OBJECT
public:
explicit Graph(QWidget * parent = 0)
: QWidget(parent)
, mGridLayout(new QGridLayout(this))
, mLabel(new QLabel("Graph"))
, mCount(0)
{
if(mTimer.interval() != mInterval)
mTimer.setInterval(mInterval);
QPushButton * startButton = new QPushButton("Start Update", this);
QPushButton * stopButton = new QPushButton("Stop Update", this);
connect(startButton, SIGNAL(clicked()), this, SLOT(startUpdateTimer()));
connect(stopButton, SIGNAL(clicked()), this, SLOT(stopUpdateTimer()));
connect(&mTimer, SIGNAL(timeout()), this, SLOT(updateGraph()));
mGridLayout->addWidget(mLabel, 0, 0, 1, 2);
mGridLayout->addWidget(startButton, 1, 0, 1, 1);
mGridLayout->addWidget(stopButton, 1, 1, 1, 1);
}
public slots:
void startUpdateTimer(int interval = mInterval)
{
if(mTimer.interval() != interval)
mTimer.setInterval(interval);
mCount = 0;
mTimer.start();
}
void stopUpdateTimer(void)
{
mTimer.stop();
}
virtual void updateGraph(void) = 0;
protected:
QGridLayout * mGridLayout;
QLabel * mLabel;
int mCount;
private:
static QTimer mTimer;
static const int mInterval = 1000;
};
QTimer Graph::mTimer;
class GraphLine : public Graph
{
Q_OBJECT
public:
explicit GraphLine(QWidget * parent = 0)
: Graph(parent)
{
setWindowTitle("GraphLine");
}
public slots:
virtual void updateGraph(void)
{
QString str = QString("GraphLine::updateGraph(): %1").arg(mCount++);
qDebug() << str;
mLabel->setText(str);
}
};
class GraphHistogram : public Graph
{
Q_OBJECT
public:
explicit GraphHistogram(QWidget * parent = 0)
: Graph(parent)
{
setWindowTitle("GraphHistogram");
}
public slots:
virtual void updateGraph(void)
{
QString str = QString("GraphHistogram::updateGraph(): %1").arg(mCount++);
qDebug() << str;
mLabel->setText(str);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
GraphLine g1;
g1.show();
GraphHistogram g2;
g2.show();
return app.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks