zoukankan      html  css  js  c++  java
  • QT定时器的使用

    From: http://dragoon666.blog.163.com/blog/static/107009194201092602326598/

    1.新建Gui工程,在主界面上添加一个标签label,并设置其显示内容为“0000-00-00 00:00:00 星期日”。

    2.在mainwindow.h中添加槽函数声明。

    private slots:

    void timerUpDate();

    3.在mainwindow.cpp中添加代码。

    添加#include <QtCore>的头文件包含,这样就包含了QtCore下的所有文件。

    构造函数里添加代码:

    QTimer *timer = new QTimer(this);

    //新建定时器

    connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));

    //关联定时器计满信号和相应的槽函数

    timer->start(1000);

    //定时器开始计时,其中1000表示1000ms即1秒

    4.然后实现更新函数。

    void MainWindow::timerUpDate()
    
    {
    
    QDateTime time = QDateTime::currentDateTime();
    
    //获取系统现在的时间
    
    QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
    
    //设置系统时间显示格式
    
    ui->label->setText(str);
    
    //在标签上显示时间
    
    }

    5.运行程序。

    ======================================================

    以下是本人自己整理的代码:

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
     
    namespace Ui {
        class MainWindow;
    }
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
     
    private:
        void timerEvent(QTimerEvent *);
     
    private:
        Ui::MainWindow *ui;
     
    private slots:
        void on_btnLogin_clicked();
    #if 0
        void timerUpDate();
    #endif
    };
     
    #endif // MAINWINDOW_H

    mainwindow.cpp

    #include <QMessageBox>
    #include <QtCore>
    #include <time.h>
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    #if 0
        QTimer *timer = new QTimer(this);
        connect(timer, SIGNAL(timeout()), this, SLOT(timerUpDate()));
        timer->start(1000);
    #else
        qsrand(time(0));
        startTimer(1000);       // 返回值为1, 即timerId
        startTimer(5000);       // 返回值为2
        startTimer(10000);      // 返回值为3
    #endif
    }
     
    MainWindow::~MainWindow()
    {
        delete ui;
    }
     
    void MainWindow::on_btnLogin_clicked()
    {
        QMessageBox::information(this, "Caption", tr("Hello你好吗"), QMessageBox::Ok);
    }
     
    #if 0
    void MainWindow::timerUpDate()
    {
        QDateTime time = QDateTime::currentDateTime();
        QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
        ui->lblCurDate->setText(str);
    }
    #else
    void MainWindow::timerEvent(QTimerEvent *t)
    {
        switch(t->timerId())
        {
        case 1:
            {
                QDateTime time = QDateTime::currentDateTime();
                QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
                ui->lblCurDate->setText(str);
                ui->lbl1->setText(tr("每秒产生一个随机数: %1").arg(qrand() % 10));
                ui->lbl1->adjustSize();
            }
            break;
        case 2:
            ui->lbl2->setText(tr("5秒后软件将关闭"));
            ui->lbl2->adjustSize();
            break;
        case 3:
            qApp->quit();        // 退出系统
            break;
        }
    }
     
    #endif

    main.cpp

    #include <QtGui/QApplication>
    #include <QTextCodec>
    #include "mainwindow.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
        MainWindow w;
        w.show();
     
        return a.exec();
    }
  • 相关阅读:
    设计模式《JAVA与模式》之解释器模式
    设计模式《JAVA与模式》之状态模式
    设计模式《JAVA与模式》之备忘录模式
    设计模式《JAVA与模式》之责任链模式
    设计模式《JAVA与模式》之命令模式
    设计模式《JAVA与模式》之迭代子模式
    iOS-联系人应用(一)
    简易 HTTP Server 实现(JAVA)
    IBM Websphere 集群会话共享问题解决办法
    集群会话共享问题的几种处理方式
  • 原文地址:https://www.cnblogs.com/wzxNote/p/5737871.html
Copyright © 2011-2022 走看看