Qt定时器 QTimer使用

来源:互联网 发布:美术生 知乎 编辑:程序博客网 时间:2024/04/27 19:57

Qt编程7:Qt定时器 QTimer使用

1631人阅读 评论(0)收藏举报
本文章已收录于:
分类:
作者同类文章X
    1、QTimer类提供了定时器信号和单触发定时器。

    QTimer很容易使用:创建一个QTimer,使用start(),并把timeout()连接到槽函数。

    当这段时间过去了,它将会发射timeout()信号。

     

    2、使用静态的函数来创建单触发定时器。

    作为一个特殊情况,一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间了。

    [cpp] view plain copy
    print?在CODE上查看代码片派生到我的代码片
    1. #include "mainwindow.h"  
    2. #include "ui_mainwindow.h"  
    3. #include <QTime>  
    4.   
    5.   
    6. MainWindow::MainWindow(QWidget *parent) :  
    7.     QMainWindow(parent),  
    8.     bIsClick(false),  
    9.     ui(new Ui::MainWindow)  
    10. {  
    11.     ui->setupUi(this);  
    12.     timer = new QTimer;                                //构建QTimer对象  
    13.     codec = QTextCodec::codecForLocale();              //设置字符集  
    14.   
    15.     //第一种方式      
    [cpp] view plain copy
    print?在CODE上查看代码片派生到我的代码片
    1. connect(timer,SIGNAL(timeout()),SLOT(S_showMsg()));//使用start()与timeout()组合实时更新当前时间  
    [cpp] view plain copy
    print?在CODE上查看代码片派生到我的代码片
    1. //第二种方式  
    [cpp] view plain copy
    print?在CODE上查看代码片派生到我的代码片
    1.     QTimer::singleShot(5000,this,SLOT(S_displayTime()));//只执行一次,间隔5秒  
    2.   
    3.     QTimer::singleShot(10000,this,SLOT(close()));       //10秒过后关闭窗口  
    4. }  
    5.   
    6. MainWindow::~MainWindow()  
    7. {  
    8.     delete ui;  
    9.     delete timer;  
    10. }  
    11.   
    12. void MainWindow::S_showMsg()  
    13. {  
    14.     static int num;  
    15.     ui->timeLabel->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss zzz"));  
    16.     if(++num == 5)  
    17.         timer->setInterval(1);                         //重置定时器时间间隔,在此过程重新调用了start()  
    18. }  
    19.   
    20.   
    21. void MainWindow::S_displayTime()  
    22. {  
    23.     ui->timeLabel2->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss zzz"));  
    24. }  
    25.   
    26.   
    27. void MainWindow::on_pushButton_clicked()  
    28. {  
    29.     bIsClick = !bIsClick;  
    30.     if(bIsClick)  
    31.     {  
    32.         ui->pushButton->setText(codec->toUnicode("停止"));  
    33.         timer->start(1000);                               //间隔1秒执行一次  
    34.   
    35.         if(timer->isActive())                             //判断定时器停止  
    36.             ui->statusLabel->setText(tr("<span style = color:red>%1</span>").arg(codec->toUnicode("定时器正在运行...")));  
    37.     }  
    38.     else  
    39.     {  
    40.         ui->pushButton->setText(codec->toUnicode("开始"));  
    41.         timer->stop();  
    42.         if(!timer->isActive())  
    43.             ui->statusLabel->setText(tr("<span style = color:green>%1</span>").arg(codec->toUnicode("定时器停止运行")));  
    44.     }  
    45. }  


     


     

     

     

    0
    0
     
     

    我的同类文章

    http://blog.csdn.net
    • Qt编程27:QStandardItemModel与QTreeView的使用(显示目录下文件)2014-07-21
    • Qt编程25:QDirModel与QTreeView使用显示目录结构2014-07-21
    • Qt编程23:QListWidget简单应用2014-07-18
    • Qt编程21:使用QPinter绘图四2014-07-16
    • Qt编程21:使用QPainter绘图二2014-07-15
    • Qt编程20:QPixmap,QImage,QBitmap的简单使用2014-07-14
    • Qt编程26:QStringListModel与QListView结合使用2014-07-21
    • Qt编程24:QTreeWidget简单使用2014-07-18
    • Qt编程22:QTableWidget简单使用2014-07-17
    • Qt编程21:使用QPainter绘图三2014-07-16
    • Qt编程21:使用QPainter绘图一2014-07-15
    更多文章
    0 0