做過安防視訊監控的同學都清楚,在視訊監控系統軟體上都可以看到一個雲台控制區域,可以對球機進行下下左右等八個方位的運動控制,還可以進行複位,一般都是美工作圖好,然後貼圖的形式加入到軟體中,好處是程式簡單,界面美工,主要取決于美工的美圖能力,缺點是對于各種分辨率的适應性稍微差點,需要不同的圖檔切圖貼圖,除非預設做好的是大圖自适應看不出差别,可能大部分人所在的公司都是小公司,一般美勞工員比較少甚至沒有,都需要程式員一人負責,甚至一開始就要考慮到各種分辨率的應用場景以及後期可能的換膚換色等。
之前做過很多自定義控件,大部分都采用了qpainter的形式繪制,有個好處就是自适應任意分辨率,是以思考着這個雲台控制儀表盤也采用純painter繪制的形式,據說純painter繪制還可以輕松移植到qml中,這又堅定了我用qpainter繪制的決心。所謂心中有坐标系,萬物皆painter。
觀察雲台儀表盤下來,基本上就這幾部分組成,圓形底盤,八個角,中間部分按鈕,整個的控件的難點就在于八個角的定位,中間部分很好定位,而且八個角不是絕對的位置,都是相對于界面的寬高按照等比例自适應排列的。八個角的滑鼠按下要做出對應的反應,發送出對應型号,網上大部分人都是切圖或者放置label或者按鈕來貼圖實作,綁定事件過濾器過濾滑鼠按下然後再發出信号。我這裡為了提升逼格,直接采用位置坐标計算法。
設計師designer完整源碼(僅限Qt4):https://pan.baidu.com/s/1t9uKOgi7PW34Kdj7rgTlrA
設計師designer可執行檔案:https://pan.baidu.com/s/1h3oUjqBun2_YD68gry84wQ
自定義控件Qt4封裝版本:https://pan.baidu.com/s/1JnpCwIW5sY9VtViqHSCi1g
自定義控件Qt5封裝版本:https://pan.baidu.com/s/1xMGlK0PN-5yckLJI8koSmQ
自定義控件屬性設計器:https://pan.baidu.com/s/1iZvQe7L0Dfif_p50qodZ8Q

頭檔案代碼:
核心代碼: