qt 時鐘設計(隨介面大小變動自適應)
阿新 • • 發佈:2018-11-05
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 ,0)
2) 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()保持和恢復畫筆狀態,旋轉和平移時對畫筆而言的,定義的是畫筆的原點點。