Qt編寫自定義控制項71 圓弧進度條

2022-01-29 09:53:50 字數 2708 閱讀 3279

現在web形式的圖表框架非常流行,國產代表就是echart,本人用過幾次,三個字屌爆了來形容,非常強大,而且易用性也非常棒,還是開源免費的,使用起來不要太爽,內建的各種圖表和儀錶盤等非常豐富,展現形式也是非常多樣的。

本次要寫的圓弧進度條,就是參考自echart中的乙個圓弧進度條,主要結構就是外圍一圈圓角進度,中間加上標題和對應進度的百分比,進度條的起始角度和結束角度可以自行調整,這樣的話進度條的開口就可以在左邊右邊上邊下邊等任意位置,通過調整角度就能實現。繪製的核心就是drawarc函式。

/** * 1:可設定範圍值,支援負數值

* 2:可設定精確度,最大支援小數點後3位

* 3:可設定圓弧寬度

* 4:可設定開始旋轉角度/結束旋轉角度

* 5:可設定儀錶盤的標題

* 6:可設定背景顏色/進度顏色/值顏色/文字顏色

* 7:自適應窗體拉伸,文字自動縮放

* 8:可自由拓展各種漸變色

* 9:可設定百分比模式,自動計算值換算成百分比

*/#include #ifdef quc

#if (qt_version < qt_version_check(5,7,0))

#include #else

#include #endif

class qdesigner_widget_export progressarc : public qwidget

#else

class progressarc : public qwidget

#endif

;#endif // progressarc_h

void progressarc::paintevent(qpaintevent *)

painter.translate(width / 2, height / 2);

painter.scale(side / 200.0, side / 200.0);

//繪製圓弧

drawarc(&painter);

//繪製當前值

drawvalue(&painter);

//繪製標題

drawtitle(&painter);

}void progressarc::drawarc(qpainter *painter)

void progressarc::drawvalue(qpainter *painter)

else

qrectf textrect(-radius, 0, radius * 2, radius / 3);

painter->drawtext(textrect, qt::aligncenter, strvalue);

painter->restore();

}void progressarc::drawtitle(qpainter *painter)

超過160個精美控制項,涵蓋了各種儀錶盤、進度條、進度球、指南針、曲線圖、標尺、溫度計、導航條、導航欄,flatui、高亮按鈕、滑動選擇器、農曆等。遠超qwt整合的控制項數量。

每個類都可以獨立成乙個單獨的控制項,零耦合,每個控制項乙個標頭檔案和乙個實現檔案,不依賴其他檔案,方便單個控制項以原始碼形式整合到專案中,較少**量。qwt的控制項類環環相扣,高度耦合,想要使用其中乙個控制項,必須包含所有的**。

全部純qt編寫,qwidget+qpainter繪製,支援qt4.6到qt5.13的任何qt版本,支援mingw、msvc、gcc等編譯器,支援任意作業系統比如windows+linux+mac+嵌入式linux等,不亂碼,可直接整合到qt creator中,和自帶的控制項一樣使用,大部分效果只要設定幾個屬性即可,極為方便。

每個控制項都有乙個對應的單獨的包含該控制項原始碼的demo,方便參考使用。同時還提供乙個所有控制項使用的整合的demo。

每個控制項的源**都有詳細中文注釋,都按照統一設計規範編寫,方便學習自定義控制項的編寫。

每個控制項預設配色和demo對應的配色都非常精美。

超過130個可見控制項,6個不可見控制項。

部分控制項提供多種樣式風格選擇,多種指示器樣式選擇。

所有控制項自適應窗體拉伸變化。

整合自定義控制項屬性設計器,支援拖曳設計,所見即所得,支援匯入匯出xml格式。

自帶activex控制項demo,所有控制項可以直接執行在ie瀏覽器中。

整合fontawesome圖形字型+阿里巴巴iconfont收藏的幾百個圖形字型,享受圖形字型帶來的樂趣。

所有控制項最後生成乙個動態庫檔案(dll或者so等),可以直接整合到qtcreator中拖曳設計使用。

目前已經有qml版本,後期會考慮出pyqt版本,如果使用者需求量很大的話。

自定義控制項外掛程式開放動態庫使用(永久免費),無任何後門和限制,請放心使用。

目前已提供32個版本的dll,其中qt_5_7_0_mingw530_32這個版本會一直保證最新的完整的。

不定期增加控制項和完善控制項,不定期更新sdk,歡迎各位提出建議,謝謝!

qt入門書籍推薦霍亞飛的《qt creator快速入門》《qt5程式設計入門》,qt高階書籍推薦官方的《c++ gui qt4程式設計》。

強烈推薦程式設計師自我修養和規劃系列書《大話程式設計師》《程式設計師的成長課》《解憂程式設計師》,受益匪淺,受益終生!

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...

Android 自定義半圓弧進度條

這是自定義的一種進度條,比如說下面那個分站數,可以通過設定 已開啟的分站數和總分站數 然後通過 已開啟的分站數 總分站數 100 已開啟的分站數所佔的百分比 上 halfcircleprogressview public class halfcircleprogressview extends vi...

Qt 自定義控制項(電池)

閒著蛋疼就做了乙個簡單的自定義電池控制項。其實想了想還挺多地方可以用的啦。效果圖。通過公有方法可修改電量,設定警戒電量,設定是否正在充電,根據需要設定漸變色,圓角,步長。public bool setvalue double v bool setminvalue double v bool setm...