⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analogclock.cpp.bak

📁 一个用QT3写的模拟时钟的源码包,用于时间的显示。为那些初次用QT编程的爱好者一个很好的实例。
💻 BAK
字号:
#include <QApplication>
#include "analogclock.h"
#include <QPainter>

AnalogClock::AnalogClock(QWidget *parent):QWidget(parent)
{
	QTimer *timer = new QTimer(this);
	connect(timer,SIGNAL(timeout(),this,SLOT(update())));
	timer->start(1000);
	setWindowTitle("Analog Clock");
	resize(200,200);
}

void AnalogClock::paintEvent(QPaintEvent *)
{
	static const QPoint hourHand[3]={
		QPoint(7,8);
		QPoint(-7,8);
		QPoint(0,-40);
	}
	static const QPoint minuteHand[3]={
		QPoint(7,8);
		QPoint(-7,8);
		QPoint(0,-70);
	}
	static const QPoint secondHand[3]={
		QPoint(7,8);
		QPoint(-7,8);
		QPoint(0,-90);
	}
	QColor hourColor(127,0,127);
	QColor minuteColor(127,127,0);
	int side=qMin(width(),height());
	QTime time=QTime::currentTime();
	QPainter painter(this);
	painter.setRenderHint(QPainter::Antialiasing);
	painter.translate(width()/2,height()/2);
	painter.scale(side/200.0,side/200.0);

	painter.setPen(QT::NoPen);
	painter.setBrush(hourColor);

	painter.save();
	painter.rotate(30.0*((time.hour()+time.minute()/60.0)));
	painter.drawConvexPolygon(hourHand,3);
	painter.restore();

	painter.setPen(hourColor);

	for(int i = 0;i < 12,++i) {
		painter.drawLine(88,0,96,0);
		painter.rotate(30,0);
	}

	painter.setPen(QT::NoPen);
	painter.setBrush(minuteColor);

	painter.save();
	painter.rotate(6.0*(time.minute()+time.second()/60.0)));
	painter.drawConvexPolygon(minuteHand,3);
	painter.restore();

	painter.setPen(minuteColor);

	for(int j = 0;j < 60;++j) {
		if((j%5)!=0) {
			painter.drawLine(92,0,96,0);
			painter.rotate(6,0);
		}
	}
}

int main(int argc, char *argv[])
{
	QApplication app(argc,argv);
	AnalogClock clock;
	clock.show();
	return app.exec();
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -