运行效果:
源代码:
myclock.h
#ifndef MYCLOCK_H
#define MYCLOCK_H
#include <QLCDNumber>
#include <QObject>
class MyClock : public QLCDNumber
{
Q_OBJECT
public:
MyClock();
void mousePressEvent(QMouseEvent*);
void mouseMoveEvent(QMouseEvent*);
public slots:
void nowTime();
private:
QPoint mpos;
bool showColon;
};
#endif // MYCLOCK_H
myclock.cpp
#include "myclock.h"
#include<QTime>
#include<QTimer>
#include<QMouseEvent>
MyClock::MyClock()
{
//设置窗体背景颜色
QPalette pal = palette();
pal.setColor(QPalette::Window,Qt::yellow);
setPalette(pal);
//设置隐藏窗口栏
setWindowFlags(Qt::FramelessWindowHint);
//设置窗体透明度
setWindowOpacity(0.2);
QTimer *timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(nowTime()));
timer->start(1000);
nowTime();
//重新设置窗口大小
resize(150,60);
showColon=false;
}
void MyClock::mousePressEvent(QMouseEvent *event)
{
//鼠标左键点击获取位置
if(event->button()==Qt::LeftButton)
{
mpos=event->globalPos()-frameGeometry().topLeft();
event->accept();
}
//鼠标右键关闭窗口
if(event->button()==Qt::RightButton)
{
close();
}
}
void MyClock::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons()&Qt::LeftButton)
{
move(event->globalPos()-mpos);
event->accept();
}
}
void MyClock::nowTime()
{
//获取当前时间
QTime time=QTime::currentTime();
QString text=time.toString("hh:mm");
if(showColon)
{
text[2]=':';
showColon=false;
}
else
{
text[2]=' ';
showColon=true;
}
//LCDNumber自带显示方法
display(text);
}