//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(); }