实现了什么功能
实现了一个时钟,展示了使用paintEvent 来对自定义控件进行绘制。
用到的知识点
QPainter的使用
部分源码解析
1
2
3
4
5
6
7
8
connect(timer, &QTimer::timeout, this, QOverload<>::of(&AnalogClock::update));
QOverload<>::of() 是一个模板函数,它接受一个函数指针, 超时就调update刷新界面, 可以用qOverload<>(xxx) 代替
QTime::currentTime() 用于获取当前时间,然后可以调用 .hour()获取小时数
painter.save()和restore 可以确保他们之间的旋转代码不会影响到后续的绘制。
Qt::NoPen :不会有outline,不然会有轮廓线。
另外qt5的官方示例里面还有一个《Analog Clock Window Example》,继承自QWindow,show 后会收到 exposeEvent,然后绘制,用到了示例1里面的类。
可以通过startTimer来启动定时器,然后在timerEvent里面判断timerId()。