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

      

  • 相关阅读:
    JAVA调优总结:JVM垃圾回收面临的问题解决方案
    用什么紧固件来固定一下我的程序人生呢
    Java设计模式动态代理研究分享
    深入理解Asp.net核心对象
    JAVA编程之动态更新JVM中的class文件
    探索J2ME应用:如何用GCF通信
    MySQL数据库备份的命令应用分享
    送给快要放弃的程序员同行们!
    减速机要像人一样智能减速就厉害了
    如何在Linux系统下进行C++程序开发
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/3660588.html
Copyright © 2011-2022 走看看