zoukankan      html  css  js  c++  java
  • Qt 定时器Timer使用

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

      

  • 相关阅读:
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
    http的响应码200,404,302,500表示的含义分别是?
    说一下 session 的工作原理?
    session 和 cookie 有什么区别?
    什么是 MyBatis?
    SpringMVC 工作原理?
    报表数据填报中的合法性校验
    报表数据填报中的自动计算
    如何用报表工具实现树状层级结构的填报表
    在报表中录入数据时如何实现行列转换
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/3660588.html
Copyright © 2011-2022 走看看