Qt編寫自定義控制項29 顏色選取面板

2022-01-29 10:30:39 字數 2162 閱讀 6267

這個控制項主要是模仿qcolordialog對話方塊中的顏色選取面板,提供乙個十字形狀的標識器,滑鼠按下開始選取顏色,移動到哪就選擇該處的顏色值,對應右側顏色條放大顯示,本控制項的難點就是如何繪製乙個邊緣框限定滑鼠只能在此框中移動,還有乙個就是如何繪製顏色漸變的背景顏色集合,這裡採用的是對每乙個畫素的高度區域設定不同的開始顏色+中間顏色+結束顏色,作為漸變顏色,然後設定qlineargradient作為畫筆的顏色進行繪製,其實就是假設寬度是100,其實是繪製了100條垂直方向的豎線而形成的效果。在繪製畫布的時候,可以將其繪製到乙個pixmap上,這樣也方便待會滑鼠移動時候直接取該pixmap的某個畫素點的顏色值。

#ifndef colorpanelhsb_h

#define colorpanelhsb_h

/** * 1:可設定當前百分比,用於控制指標大小

* 2:可設定邊框寬度

* 3:可設定邊框顏色

* 4:可設定指標顏色

*/#include #ifdef quc

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

#include #else

#include #endif

class qdesigner_widget_export colorpanelhsb : public qwidget

#else

class colorpanelhsb : public qwidget

#endif

;#endif // colorpanelhsb_h

void colorpanelhsb::paintevent(qpaintevent *)

void colorpanelhsb::drawbg(qpainter *painter)

painter->restore();

}void colorpanelhsb::drawcursor(qpainter *painter)

void colorpanelhsb::drawborder(qpainter *painter)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

目前已提供26個版本的dll,其中包括了qt5.12.3 msvc2017 32+64 mingw 32+64 的。

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

濤哥的知乎專欄 qt高階之路

Qt編寫自定義控制項52 顏色下拉框

1 可設定下拉框元素高度 2 可設定下拉框元素寬度 3 可設定是否自動調整下拉框元素寬度,根據元素寬高自動調整 include ifdef quc if qt version qt version check 5,7,0 include else include endif class qdesig...

QT自定義控制項重疊顏色異常

首先看錯誤效果 這是兩個qlistwidget的item qlistwidget 設定了alternatingrowcolors item 交替變換顏色 item是我自定義的widget控制項,上面放了一些qlabel,其中文字qlabel我使用qpalette設定為灰色,但始終顯示黑色。下面是修正...

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