实现一个简易的电子钟

版权声明:本文为博主原创文章,未经博主允许不得转载。 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.实现效果:



可以自由拖动,右键关闭


猜你喜欢

转载自blog.csdn.net/qq_38784098/article/details/77854049