QTime类的currentTime()函数用于获取当前的系统时间;QTime的toString()函数用于将获取的时间转换为字符串类型。为了方便显示,toString()函数的参数需指定转换后时间的显示格式。
- H/h:小时(若使用H表示小时,则无论何时都以24小时制显示小时;若使用h表示小时,则当同时指定AM/PM时,采用12小时制显示小时,其他情况下仍采用24小时制进行显示)。
- m:分。
- s:秒。
- AP/A:显示AM或PM。
- Ap/a:显示am或pm。
可根据实际显示需求进行格式设置,例如:
hh:mm:ss A 22:30:09 PM
H:mm:s a 10:30:9 pm
QTime的toString()函数也可以直接利用Qt::DateFormat作为参数指定时间显示的格式,如:Qt::TextDate、Qt::ISODate、Qt::LocalDate等。
下面通过一个电子时钟的例子来说明它的使用:
一、运行结果

二、详细代码
digiclock.h
#ifndef DIGICLOCK_H
#define DIGICLOCK_H#include <QLCDNumber>class DigiClock : public QLCDNumber
{Q_OBJECT
public:DigiClock(QWidget *parent = 0);void mousePressEvent(QMouseEvent *);void mouseMoveEvent(QMouseEvent *);public slots:void showTime(); //显示当前时间private:QPoint dragPostion; //保存鼠标点相对电子时钟窗体左上角的偏移值bool showColon; //用于显示时间是否显示":"};#endif // DIGICLOCK_H
digiclock.cpp
#include "digiclock.h"
#include <QTime>
#include <QTimer>
#include <QMouseEvent>DigiClock::DigiClock(QWidget *parent): QLCDNumber(parent)
{/*设置时钟背景*/QPalette p = palette();p.setColor(QPalette::Window,Qt::white);setPalette(p);setWindowFlags(Qt::FramelessWindowHint); //设置窗体的标识,此处设置为没有面板边框和标题栏的窗体setWindowOpacity(0.5); //设置窗体的透明度为0.5,即半透明QTimer *timer = new QTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));timer->start(1000); //以1000毫秒为周期启动定时器。showTime();resize(150,60);showColon = true;
}void DigiClock::showTime()
{QTime time = QTime::currentTime(); //获取当前的系统时间QString text = time.toString("hh:mm");if(showColon) //控制时分中间的两点闪显功能{text[2]=':';showColon = false;}else{text[2]=' ';showColon = true;}display(text);
}void DigiClock::mousePressEvent(QMouseEvent *event) //注(1)
{if(event->button() == Qt::LeftButton){dragPostion = event->globalPos()-frameGeometry().topLeft();event->accept();}if(event->button() == Qt::RightButton){close();}
}void DigiClock::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons() & Qt::LeftButton) //返回鼠标的状态{move(event->globalPos()-dragPostion);event->accept();}
}
注(1):通过执行鼠标按下事件响应函数mousePressEvent(QMouseEvent *)和鼠标移动事件响应函数mouseMoveEvent(QMouseEvent *)的重定义,可以实现鼠标在桌面上随意拖动电子时钟。
在鼠标按下响应函数mousePressEvent(QMouseEvent *)中,首先判断按下的键是否为鼠标左键。若按下的键是鼠标左键,则保存当前鼠标点所在的位置相对于窗体左上角的偏移值dragPostion;若按下的键是右键,则退出窗体。
在鼠标移动响应函数mouseMoveEvent(QMouseEvent *)中,首先判断当前鼠标状态。调用event->buttons()返回鼠标的状态,若为左侧按键,则调用QWidget的move()函数将窗体移动至鼠标当前点。由于move()函数的参数指的是窗体左上角的位置,所以要使用鼠标当前的位置减去相对窗体左上角的偏移值dragPostion。















