1. 程式人生 > >qt 時鐘設計(隨介面大小變動自適應)

qt 時鐘設計(隨介面大小變動自適應)

demo連結:https://download.csdn.net/download/weixin_39841821/10568854

一、 需求

a) 畫出一個圓形錶盤,包含三角形的時針、分針、秒針,以及上方的刻度,加上名字
b) 在窗體發生變化的時候,時鐘能夠根據窗體大小自動調整
c) 時間能夠顯示當前時間

二、 實現:通過在.h重宣告void paintEvent(QPaintEvent ) 和類中重寫void Widget::paintEvent(QPaintEvent )

a)  利用QPainter類中的:
    1)  translate(int x,int y)把中心點作為(0
02) scale(int x,inty)設定縮放比例 //這樣就會隨著視窗變化Painter畫出的影象也發生變化 3) drawEllipse(int,int,int,int)設定起點座標和長軸和短軸 4) drawConvexPolygon(QPoint[],int) 5) setPen(pen)定義線段型別 6) setBrush(QColor)定義填充顏色

利用QPoint定義3個3點座標,再通過drawConvexPolygon劃出不規則多邊形既三角形
通過drawLine畫出最右方的直線,通過rotate每旋轉30°畫一次,畫12次,形成短刻度
通過drawLine畫出最右方的直線,通過rotate每旋轉6°畫一次,畫60次,形成長刻度

b)  把畫的方法都寫scale下方,那麼每一次視窗變化都會記錄上一次情況,然後按照比例縮放

c)通過定義時鐘中斷,Timer t.start(1000), 然後連線訊號timerout() 和 update() , 然後每一次中斷都會重繪一         次時鐘介面
   計算時鐘應該再的角度:

時鐘每個小時旋轉30°,每分鐘旋轉30/60°
分針每分鐘旋轉6°,每小時旋轉6/30°
秒鐘每秒鐘旋轉6°

三、 介面效果

這裡寫圖片描述

Ps:在繪製過程中注意使用save()和restore()保持和恢復畫筆狀態,旋轉和平移時對畫筆而言的,定義的是畫筆的原點點。