在qt中實現自定義的時鐘控制項並可以實現與本機時間同步。
1、背景圖設定(此步根據需要新增)
qpainter painter
(this);
//設定乙個背景
;
2、設定定時器,時間間隔為1000毫秒,並且將定時器時間與update函式關聯為訊號和槽,定時器每過乙個時間間隔傳送訊號,update作為槽函式,接到訊號後自動呼叫paintevent函式進行重繪。
qtimer *timer =
newqtimer
(this);
timer-
>
start
(1000);
connect
(timer,
signal
(timeout()
),this
,slot
(update()));
3、為達到較好效果,需要將座標原點從介面的左上角平移至介面中心,並進行縮放,使得繪製出的表盤位於介面中心且大小合適
painter.
setrenderhints
(qpainter::antialiasing|qpainter::textantialiasing)
;painter.
translate
(width()
/2,height()
/2);
//平移座標系原點至介面中心點
painter.
scale
(side/
300.0
,side/
300.0);
//等比例縮放
4、分步依次將時鐘的構成部分繪製出來(具體**後面附上)
drawscale
(&painter)
;//繪製刻度線
drawscalenum
(&painter)
;//繪製刻度值
drawhour
(&painter)
;//繪製時針
drawmin
(&painter)
;//繪製分針
drawsec
(&painter)
;//繪製秒針
5、獲取當前的時間
qtime time=qtime::
currenttime()
;//獲取本機當前時間
標頭檔案
#ifndef widget_h
#define widget_h
#include
qt_begin_namespace
namespace ui
qt_end_namespace
class
widget
:public qwidget
;#endif
// widget_h
原始檔
#include
"widget.h"
#include
"ui_widget.h"
#include
#include
#include
#include
#include
widget::
widget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::widget)
void widget::
paintevent
(qpaintevent*event)
void widget::
drawscale
(qpainter *painter)
else
painter-
>
rotate(6
);//每畫一條刻度線將整個介面轉動6度
} painter-
>
restore()
;//進行復位
}void widget::
drawscalenum
(qpainter *painter)
painter-
>
restore()
;}void widget::
drawhour
(qpainter *painter)
void widget::
drawmin
(qpainter *painter)
void widget::
drawsec
(qpainter *painter)
widget::
~widget()
#include
"widget.h"
#include
intmain
(int argc,
char
*ar**)
資源字首為: /
參考:
Qt編寫自定義控制項66 光暈時鐘
1 可設定圓弧半徑寬度 2 可設定光暈寬度 3 可設定光暈顏色 4 可設定文字顏色 5 採用動畫機制平滑進度展示時間 include ifdef quc if qt version qt version check 5,7,0 include else include endif class qde...
Qt練習之自定義時鐘
在qtproject中自學qt時,上面有乙個例項是編寫時鐘的,其中用到了qtimer,訊號和槽以及事件的知識,是練習qt的好例子,本人在例項上新增了秒鐘的設定,從而更加像乙個使用的時鐘錶了,下面展示一下執行結果。下面我來和大家分享一下,具體實現,類analogclock是自定義類,它繼承於qwidg...
Qt 自定義控制項(電池)
閒著蛋疼就做了乙個簡單的自定義電池控制項。其實想了想還挺多地方可以用的啦。效果圖。通過公有方法可修改電量,設定警戒電量,設定是否正在充電,根據需要設定漸變色,圓角,步長。public bool setvalue double v bool setminvalue double v bool setm...