//mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLCDNumber; class QTimer; class MyDialog : public QDialog { Q_OBJECT public: explicit MyDialog(QWidget *parent = 0); signals: public slots: void onTimerOut(); private: QLCDNumber *lcd; QTimer *timer; }; #endif // MYDIALOG_H
//mydialog.cpp #include "mydialog.h" #include <QtGui/QLCDNumber> #include <QtGui/QVBoxLayout> #include <QTimer> #include <QTime> MyDialog::MyDialog(QWidget *parent) : QDialog(parent) { //新建一个QLCDNumber对象 lcd = new QLCDNumber(); //设置晶体管控件QLCDNumber能显示的位数 lcd->setDigitCount(10); //设置显示的模式为十进制 lcd->setMode(QLCDNumber::Dec); //设置显示方式 lcd->setSegmentStyle(QLCDNumber::Flat); //新建一个QTimer对象 timer = new QTimer(); //设置定时器每个多少毫秒发送一个timeout()信号 timer->setInterval(1000); //启动定时器 timer->start(); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(lcd); //信号和槽 connect(timer, SIGNAL(timeout()), this, SLOT(onTimerOut())); //重新设置窗口的布局管理器 this->setLayout(layout); //重新设置窗口的大小 this->resize(200, 100); //重新设置窗口的标题 this->setWindowTitle("QTimerDemo"); } void MyDialog::onTimerOut() { //获取系统当前时间 QTime time = QTime::currentTime(); //设置晶体管控件QLCDNumber上显示的内容 lcd->display(time.toString("hh:mm:ss")); }
//main.cpp #include <QtGui/QApplication> #include "mydialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MyDialog dialog; dialog.show(); return a.exec(); }