版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38784098/article/details/77854049
1.新建项目“clock” 基类选择“QDialog"
2.在”clock“添加新文件
3.示例代码
“digiclockh.h"
#include <QLCDNumber>
#include "ui_digiclockh.h"
class digiclockh : public QLCDNumber
{
Q_OBJECT
public:
digiclockh(QWidget *parent = Q_NULLPTR);
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
~digiclockh();
public slots:
void showTime();//显示当前时间
private:
Ui::digiclockh ui;
QPoint dragPosition; //保存鼠标点相对电子时钟窗体左上角的偏移值
bool showColon; //是否显示“:”
//QWidget *asd;
};
“digiclockh.cpp"
#include "digiclockh.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
#include <QPalette>
digiclockh::digiclockh(QWidget *parent)
: QLCDNumber(parent)
{
ui.setupUi(this);
//QPalette p = palette();
//p.setColor(QPalette::window, Qt::blue);
//setPalette(p);
setWindowFlags(Qt::FramelessWindowHint); //没有面板边框跟标题栏的窗体
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;
}
digiclockh::~digiclockh()
{
}
void digiclockh::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
//时钟格式 hh:mm:ss AP/A 22:30:08 AM/PM
//H:mm:s Ap/a 10:30:8 am/pm
if (showColon)
{
text[2] = ':';
showColon = false;
}
else
{
text[2] = ' ';
showColon = true;
}
display(text);
}
void digiclockh::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
if (event->button() == Qt::RightButton)
{
close();
}
}
void digiclockh::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() && Qt::LeftButton)
{
move(event->globalPos() - dragPosition);
event->accept();
}
}
"main.cpp"
#include "Clockdemo.h"
#include <QtWidgets/QApplication>
#include "digiclockh.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
digiclockh w;
w.show();
return a.exec();
}
4.实现效果:
可以自由拖动,右键关闭