头文件:
#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H
#include <QLCDNumber>
class digitalClock : public QLCDNumber
{
Q_OBJECT
public:
digitalClock(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);//鼠标点击事件
void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件
private slots:
void showTime();//显示时间
private:
QPoint m_dragPosition;//保存鼠标点相对于钟表左上角的偏移值
bool m_showColon;//钟表显示:
};
#endif // DIGITALCLOCK_H
cpp文件:
#include "digitalclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
digitalClock::digitalClock(QWidget *parent):QLCDNumber(parent)
{
setWindowFlags(Qt::FramelessWindowHint);//无边框窗体风格
//设置蓝色背景
QPalette p = palette();
p.setColor(QPalette::Window,Qt::blue);
setPalette(p);
//设置窗体透明度
setWindowOpacity(0.5);
//创建并打开计时器
QTimer *timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,&digitalClock::showTime);
timer->start(1000);
showTime();
resize(150,60);//设置窗口大小
m_showColon = true;
}
void digitalClock::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton){
m_dragPosition = event->globalPos() - frameGeometry().topLeft();
//鼠标相对屏幕左上角的位置 - 时钟窗体左上角的位置
event->accept();
}
if(event->button() == Qt::RightButton){//当点击鼠标右键时关闭窗口
close();
}
}
void digitalClock::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton){
move(event->globalPos() - m_dragPosition);
event->accept();
}
}
void digitalClock::showTime()
{
QTime time = QTime::currentTime();//获取当前时间
QString strTime = time.toString("hh:mm");//把获取的时间转化为字符串
if(m_showColon){
strTime[2]=':';
}else{
strTime[2]=' ';
}
display(strTime);//显示时间
m_showColon = !m_showColon;
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探