Qt之对话框设计——电子时钟

digiclock.h

#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include <QLCDNumber>
#include <QPoint>

class DigiClock : public QLCDNumber
{
	Q_OBJECT

public:
	DigiClock(QWidget *parent = 0);
	~DigiClock();

	void mousePressEvent(QMouseEvent *);
	void mouseMoveEvent(QMouseEvent *);

public slots:
	void showTime();

private:
	QPoint	dragPosition;	//鼠标点击位置相对窗体左上角的偏移量
	bool showColon;		//是否显示“:”
};

#endif // CLOCK_H

digiclock.cpp

#include "digiclock.h"
#include <QPalette>
#include <QTimer>
#include <QTime>
#include <QMouseEvent>

DigiClock::DigiClock(QWidget *parent)
	: QLCDNumber(parent)
{
	QPalette plt;	//实例化调色板对象
	plt.setColor(QPalette::Window,Qt::blue);
	setPalette(plt);

	setWindowFlags(Qt::FramelessWindowHint);

	setWindowOpacity(0.5);		//设置不透明度

	QTimer *timer = new QTimer(this);
	connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
	timer->start(1000);

	showTime();

	resize(150,60);
	showColon = true;
}

DigiClock::~DigiClock()
{

}

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 * e)
{
	if (e->button() == Qt::LeftButton)
	{
		dragPosition = e->globalPos() - frameGeometry().topLeft();
		e->accept();
	}
	if(e->button() == Qt::RightButton)
	{
		close();
	}
}

void DigiClock::mouseMoveEvent(QMouseEvent * e)
{
	if(e->buttons() & Qt::LeftButton)
	{
		move(e->globalPos() - dragPosition);
		e->accept();
	}
}

转载于:https://www.cnblogs.com/hanzhaoxin/archive/2012/11/22/2783459.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值