qt实现电子钟表

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 dragPosition;  //保存鼠标点相对电子时钟窗体左上角的偏移量
    bool showColon;       //用于显示时间时是否显示:
};

#endif 

digiclock.cpp源文件

DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{
//设置时钟背景
QPalette p=palette();//定义调色板对象
p.setColor(QPalette::Window,Qt::blue);//设置背景颜色为蓝色
setPalette(p);//启用调色板对象
setWindowFlags(Qt::FramelessWindowHint);//生成无边界窗口
setWindowOpacity(0.5);//设置窗体透明度为0.5
QTimer *timer=new QTimer(this);//新建定时器对象
connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));//连接定时器地timeout()信号与显示时间的槽信号showTime()
timer->start(1000);//启动定时器(每隔1000ms启动一次)
showTime();//初始时间显示
resize(150,60);//设置电子时钟显示的尺寸
showColon=true;/

}
//槽函数showTime()
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)
{
    if(event->button()==Qt::LeftButton) //判断按下键是否为鼠标左键
    {
        //dragPosition=event->globalPos()-frameGeometry().topLeft();
        dragPosition=event->pos();//两种方法
        //event->accept();//接收事件
    }
    if(event->button()==Qt::RightButton)    //若按下键为鼠标右键
    {
        close();
    }
}
//鼠标移动响应函数
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {
        move(event->globalPos()-dragPosition);
        
    }
}
#include "dialog.h"
#include <QApplication>
#include"digiclock.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    DigiClock clock;
    clock.show();
    return a.exec();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值