首页 > 其他 > 详细

QTime 类

时间:2021-01-21 21:03:21      阅读:42      评论:0      收藏:0      [点我收藏+]

常用函数

//公共函数

QTime()
QTime(int h,int m,int s=0,int ms=0)
QTime addMSecs(int ms)const
QTime addSecs ( int s ) const
int elapsed () const
int hour () const
bool isNull () const
bool isValid () const
int minute () const
int msec () const
int msecsTo ( const QTime & t ) const
int restart ()
int second () const
int secsTo ( const QTime & t ) const
bool setHMS ( int h, int m, int s, int ms = 0 )
void start ()
QString toString ( const QString & format ) const
QString toString ( Qt::DateFormat format = Qt::TextDate ) const
bool operator!= ( const QTime & t ) const
bool operator< ( const QTime & t ) const
bool operator<= ( const QTime & t ) const
bool operator== ( const QTime & t ) const
bool operator> ( const QTime & t ) const
bool operator>= ( const QTime & t ) const
//静态公共函数
QTime currentTime ()
QTime fromString ( const QString & string, Qt::DateFormat format = Qt::TextDate )
QTime fromString ( const QString & string, const QString & format )
bool isValid ( int h, int m, int s, int ms = 0 )
//相关的非成员
QDataStream & operator<< ( QDataStream & out, const QTime & time )
QDataStream & operator>> ( QDataStream & in, QTime & time )

常用方法介绍

1.QTime addMSecs(int ms) const

    当前时间增加毫秒,ms可为负

2.QTime addSecs(int s) const

    当前时间增加秒,s可为负

3.int elapsed() const

    返回自上次调用start()或restart()以来经过的毫秒数。

4.int hour() const

    返回小时数

5.int minute() const

    返回分钟数

6.second() const

    返回秒数

7.int msec() const

    返回毫秒数

8.bool isNull() const

    如果时间为空返回true

9.bool isValid() const

    判断当前时间对象是否有效,比如H的范围是0~23,M和S的范围是0~59

10.int msecsSinceStartOfDay() const

    返回从一天开始的秒数,即从00:00:00开始的秒数。

11.int secsTo(const QTime &t) const

    返回从当前时间到t的秒数。如果t比这个时间早,返回的毫秒数为负。

12.int msecsTo(const QTime &t) const

    返回从当前时间到t的毫秒数。如果t比这个时间早,返回的毫秒数为负。

13.int restart()int

    将此时间设置为当前时间,并返回自上次调用start()或restart()以来经过的毫秒数。

14.bool setHMS(int h, int m, int s, int ms = 0)

    将时间设置为小时h、分钟m、秒s和毫秒ms。

15.void start()

    将当前系统时间记录为当前时间

16.QString toString(const QString &format) const

    将时间转化为特定的字符串格式

17.QString toString(Qt::DateFormat format = Qt::TextDate) const

    按照Qt::DateFormat的格式转化

18.QTime currentTime()

    获得系统当前时间

19.QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)

    从Qt::DateFormat转化为QTime对象

20.QTime fromString(const QString &string, const QString &format)

    从特定的字符串格式转化为QTime对象

21.start():计时开始。

22.restart():计时开始,并返回自上次调用start()或restart()以来经过的毫秒数。

23.elapsed():j计时结束,返回自上次调用start()或restart()以来经过的毫秒数。

时间字符串格式

h:没有补零的小时(如果AM/PM显示,则为0到23或1到12)

hh:位数不够需要补零的小时(00至23或01至12,如果是AM/PM显示)

m:没有补零的分钟(0到59)

mm:位数不够需要补零的分钟(00到59)

s:没有补零的秒(0到59)

ss:位数不够需要补零的秒(00到59)

z:没有补零的毫秒(0到999)

zzz:位数不够需要补零的毫秒(000到999)

ap/AP:上午/下午,ap为am或pm,AP为AM或PM

例:

hh:mm:ss.zzz    08:18:68.138

h:m:s ap        8:18:68 am

 

QT中两种定时器的用法:

         其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。

方法一:QObject中的定时器的使用,需要用到三个函数

1、   int QObject::startTimer ( int interval ) ;

        这个是开启一个定时器的函数,他的参数interval是毫秒级别。当开启成功后会返回这个定时器的ID, 并且每隔interval 时间后会进入timerEvent 函数。直到定时器被杀死。

2、 void QObject::timerEvent ( QTimerEvent * event ); 

当定时器超时后,会进入该事件timerEvent函数,需要重写timerEvent函数,在函数中通过判断event->timerId()来确定定时器,然后执行某个定时器的超时函数。

3、 void QObject::killTimer ( int id );

              通过从startTimer返回的ID传入killTimer 函数中杀死定时器,结束定时器进入超时处理。

以下是QObject中的定时器具体使用简单例子:

  1. #define _MYTIMER_H  
  2.   
  3. #include <QObject>  
  4.   
  5. class MyTimer : public QObject  
  6. {  
  7.     Q_OBJECT  
  8.   
  9. public:  
  10.     MyTimer(QObject* parent = NULL);  
  11.     ~MyTimer();  
  12.     void  handleTimeout();  //超时处理函数  
  13.     virtual void timerEvent( QTimerEvent *event);  
  14. private:  
  15.     int m_nTimerID;  
  16. };  
  17.   
  18. #endif //_MYTIMER_H
  1. #include "mytimer.h"  
  2.   
  3. #include<QDebug>   
  4. #include <QTimerEvent>  
  5.   
  6. #define TIMER_TIMEOUT   (5*1000)  
  7.   
  8. MyTimer::MyTimer(QObject *parent)  
  9.     :QObject(parent)  
  10. {  
  11.     m_nTimerID = this->startTimer(TIMER_TIMEOUT);  
  12. }  
  13.   
  14. MyTimer::~MyTimer()  
  15. {  
  16.       
  17. }  
  18.   
  19. void MyTimer::timerEvent(QTimerEvent *event)  
  20. {  
  21.     if(event->timerId() == m_nTimerID){  
  22.         handleTimeout();  
  23.     }  
  24. }  
  25.   
  26. void MyTimer::handleTimeout()  
  27. {  
  28.     qDebug()<<"Enter timeout processing function\n";  
  29.     killTimer(m_nTimerID);  
  30. }  

方法二:使用QTimer定时器类

1、  首先创建一个定时器类的对象

QTimer *timer = new QTimer(this);

2、  timer 超时后会发出timeout()信号,所以在创建好定时器对象后给其建立信号与槽

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

3、  在需要开启定时器的地方调用void QTimer::start ( int msec );

这个start函数参数也是毫秒级别;

timer->start(msec );

4、 在自己的超时槽函数里面做超时处理。

以下是QTimer定时器类具体使用简单例子:

  1. #ifndef _MYTIMER_H  
  2. #define _MYTIMER_H  
  3. #include <QObject>  
  4. class QTimer;  
  5. class MyTimer : public QObject  
  6. {  
  7.     Q_OBJECT  
  8.   
  9. public:  
  10.     MyTimer(QObject* parent = NULL);  
  11.     ~MyTimer();  
  12. public slots:  
  13.     void handleTimeout();  //超时处理函数  
  14. private:  
  15.     QTimer *m_pTimer;  
  16. };  
  17.   
  18. #endif //_MYTIMER_H  
  1. #include "mytimer.h"  
  2.   
  3. #include<QDebug>   
  4. #include <QTimer>  
  5.   
  6. #define TIMER_TIMEOUT   (5*1000)  
  7.   
  8. MyTimer::MyTimer(QObject *parent)  
  9.     :QObject(parent)  
  10. {  
  11.     m_pTimer = new QTimer(this);  
  12.     connect(m_pTimer, SIGNAL(timeout()), this, SLOT(handleTimeout()));  
  13.     m_pTimer->start(TIMER_TIMEOUT);  
  14. }  
  1. MyTimer::~MyTimer()  
  2. {  
  3.       
  4. }  
  5.   
  6. void MyTimer::handleTimeout()  
  7. {  
  8.     qDebug()<<"Enter timeout processing function\n";  
  9.     if(m_pTimer->isActive()){  
  10.         m_pTimer->stop();  
  11.     }  
  12. }

QTime 类

原文:https://www.cnblogs.com/feiyang-xing/p/14309679.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!