日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QStyle自定义重绘QRubberBand控件

發(fā)布時間:2024/1/18 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QStyle自定义重绘QRubberBand控件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介: 根據(jù)QStyle的繼承關(guān)系和重繪原理;通過實現(xiàn)一個繼承QCommonStyle類的實現(xiàn),實現(xiàn)自己的自定義控件QRubberBand控件。

文章目錄

    • 本博文的簡述or解決問題?
    • 運行效果:
    • QRubberBand重繪:
    • 開心分享:
    • 系列地址:

本博文的簡述or解決問題?

? 詳情: 見簡介


編程環(huán)境: deepin 15.11 x64 專業(yè)版 Kernel: x86_64 Linux 4.15.0-30deepin-generic

編程軟件: Qt Creator 4.8.2 (Enterprise), Qt 5.9.8、


運行效果:

先上一張最終的重繪運行效果圖:


QRubberBand重繪:

這幾就不翻開官方簡介了,話說初次看到QRubberBand這個名字的時候,我一臉的懵逼。這個控件,我怎么聽都沒有聽說過,更沒有見過。

但是: 如果有人和你講,這就是windows的這個東西,那就很大家都見過了,就是多選文件時候的那個高亮矩形,如下圖

繪畫思路:

  • 對應(yīng)的重載函數(shù)里面,case 這個控件,然后繪畫一個矩形(其畫刷和邊框的顏色是不一樣的)

代碼如下:

QPainter *p, const QWidget *w) const {switch (element) {case CE_RubberBand: {if (const QStyleOptionRubberBand *rubber = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) {QColor color = opt->palette.highlight().color();color.setAlphaF(0.1);p->setBrush(color);color.setAlphaF(0.2);p->setPen(QPen(color, 1));p->drawRect(opt->rect.adjusted(0, 0, -1, -1));return;}break;}default:break;}QCommonStyle::drawControl(element, opt, p, w); }

開心分享:

因為有著許許多多的熱心網(wǎng)友的無私分享,從他們的博客中學(xué)習(xí)成長,學(xué)會很多,故也不辭辛苦也將自己的項目或經(jīng)驗整理成博客的形式,也提供給一起大家學(xué)習(xí)探討與交流


系列地址:

QtExamples

歡迎 star 和 fork 這個系列的 QT / DTK 學(xué)習(xí),附學(xué)習(xí)由淺入深的目錄。

總結(jié)

以上是生活随笔為你收集整理的QStyle自定义重绘QRubberBand控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。