1. 本文参考其它网友的设计,并进行了改进. 本时钟采用键盘事件,程序运行时,按下键盘的[ESC]键即可关闭程序.
2. 源码如下:
Clock.pro
#-------------------------------------------------
#
# Project created by QtCreator 2016-12-29T10:50:10
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Clock
TEMPLATE = app
RC_FILE += \
ico.rc
SOURCES += main.cpp\
clock.cpp
HEADERS += clock.h
FORMS += clock.ui
clock.h
#ifndef CLOCK_H
#define CLOCK_H
#include <QWidget>
namespace Ui {
class Clock;
}
class Clock : public QWidget
{
Q_OBJECT
public:
explicit Clock(QWidget *parent = 0);
~Clock();
protected:
void paintEvent(QPaintEvent *);
void keyPressEvent(QKeyEvent *);
private:
Ui::Clock *ui;
int clockTick;
};
#endif // CLOCK_H
clock.cpp
#include <QTimer>
#include <QDate>
#include <QPainter>
#include <QFont>
#include <QKeyEvent>
#include "clock.h"
#include "ui_clock.h"
Clock::Clock(QWidget *parent) :
QWidget(parent),
ui(new Ui::Clock)
{
ui->setupUi(this);
clockTick = 0;
//-------------------------------------------------------------------------
// 时钟定时器(信号和槽方式)
//-------------------------------------------------------------------------
QTimer *timer = new QTimer(this); //声明一个定时器
//update()会自动产生重绘消息, 调用paintEvent()
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
//连接信号槽,定时器超时触发窗体更新
timer->