Qt5 趣学(2):电子钟

来源:互联网 发布:网络教育专科学历 编辑:程序博客网 时间:2024/06/05 06:00
/*----------------------撸代码式-----------------------*//*----------------------clock.h-----------------------*/#ifndef DIGICLOCK_H#define DIGICLOCK_H#include <QLCDNumber>class DigiClock : public QLCDNumber{    Q_OBJECTprivate:    QPoint dragPosition;    // 保存鼠标点相对电子时钟窗体左上角的偏移值    bool showColon;         // 用于显示时间时是否显示“:”public:    DigiClock(QWidget *parent = 0);    void mousePressEvent(QMouseEvent *vent);    void mouseMoveEvent(QMouseEvent *event);public slots:    void showTime();    // 显示当前时间};#endif // DIGICLOCK_H/*---------------------clock.cpp----------------------*/#include "digiclock.h"#include <QTimer>#include <QTime>#include <QMouseEvent>#include <QPalette>// 构造函数DigiClock::DigiClock(QWidget *parent) :    QLCDNumber(parent){    /* 设置时钟背景 */    // 完成电子时钟窗体背景色的设置    QPalette p = palette();    p.setColor(QPalette::Window,Qt::black);  // 背景色为蓝色    setPalette(p);    // 设置窗体的标识,此处设置窗体为一个没有面板边框和标题栏的窗体    setWindowFlags(Qt::FramelessWindowHint);    // 设置窗体的透明度为0.5,即半透明    setWindowOpacity(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::mousePressEvent(QMouseEvent *event){    if(event->button() == Qt::LeftButton)    {        dragPosition = 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()-dragPosition);        event -> accept();    }}// showTime槽函数void DigiClock::showTime(){    // 获取当前的系统时间,保存在一个QTime对象中    QTime time = QTime::currentTime();    // 把获取的当前时间转换为字符串类型    QString text = time.toString("hh:mm");    // showColon:控制电子时钟“时”与“分”之间的表示秒钟的两个点的闪显功能    if(showColon)    {        text[2] = ':';        showColon = false;    }    else    {        text[2] = ' ';        showColon = true;    }    display(text);  // 显示转换好的字符串时间}/*----------------------main.cpp----------------------*/#include "digiclock.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    DigiClock clock;    clock.show();    return a.exec();}
0 0