最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼

 更新時(shí)間:2023年10月09日 08:35:08   作者:視圖猿人  
在平時(shí)做頁面開發(fā)時(shí),有些時(shí)候會用到圓形進(jìn)度條,本文主要介紹了Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下

在Qt自帶的控件中,只有垂直進(jìn)度條、水平進(jìn)度條兩種。

在平時(shí)做頁面開發(fā)時(shí),有些時(shí)候會用到圓形進(jìn)度條,比如說:下載某個(gè)文件的下載進(jìn)度。

展示效果,如下圖所示:

實(shí)現(xiàn)這個(gè)功能主要由以下幾個(gè)重點(diǎn):

1:圖形繪制

2:數(shù)值計(jì)算

也算是一個(gè)初級例子,下面我來講解下如何實(shí)現(xiàn)這個(gè)簡單的小功能吧!

功能

自定義繪制類:QRoundedProgress

繼承自QWidget

圖形繪制

1.繪制窗口整體背景色值

QPainter painter(this);
painter.fillRect(this->rect(), m_crBack);
painter.setRenderHint(QPainter::Antialiasing); //抗鋸齒

m_crBack:窗口背景色,默認(rèn)是 QColor(255, 255, 255);

因?yàn)楹罄m(xù)要繪制圓形,在繪制之前加上抗鋸齒效果。

2.圓形進(jìn)度條通道繪制

什么叫做圓形進(jìn)度條的通道呢?

如圖所示的灰色區(qū)域就是圓形進(jìn)度條的通道,也就是我們說的圓環(huán)。

實(shí)現(xiàn)方式:兩個(gè)半徑不同的圓重疊在一起(且圓心相同),未重疊的部分也就是圓形的通道區(qū)域。

假設(shè)QRoundedProgress類大小是:QSize(100, 100),也就是說該窗口的寬度=100,高度=100。

大圓形代碼:

painter.setPen(m_crProgressChannel);
painter.setBrush(m_crProgressChannel);
painter.drawEllipse(this->rect());

以整個(gè)窗口作為圓形的區(qū)域進(jìn)行繪制,顯示效果如下:

m_crProgressChannel:通道號顏色值,默認(rèn)是 QColor(220, 220, 220);

小圓形代碼:

QRect rectInCircl = this->rect();
rectInCircl.adjust(10, 10, -10, -10);
painter.setPen(m_crBack);
painter.setBrush(m_crBack);
painter.drawEllipse(rectInCircl);

以窗口的整體區(qū)域?yàn)闃?biāo)準(zhǔn),向內(nèi)調(diào)整10個(gè)像素大小,采用了QRect::adjust方法。

10就是圓環(huán)的寬度了。

3.圓形進(jìn)度條繪制

進(jìn)度條也就是在文章最開始gif動畫中藍(lán)色的動態(tài)條。

該如何簡單的繪制整個(gè)進(jìn)度呢?

最簡單的方式:采用QPainter扇形的繪制方式!

在程序中,進(jìn)度條的變化可以采用扇形的區(qū)域進(jìn)行表示。隨著數(shù)據(jù)的變化,扇形的面積也逐漸遞增,直到達(dá)到設(shè)定的最大值為止。

該如何繪制呢?

要是繪制一個(gè)實(shí)心的扇形,直接在小圓形代碼后面追加肯定是不行的,會出現(xiàn)下面的效果:

小圓形直接被覆蓋住了,這樣的效果與文章最開始的展示效果是不一致的。

修改方式:將扇形繪制的方法放置到大圓形、小圓形代碼之間

繪制扇形代碼如下:

painter.setPen(m_crProgressBar);
painter.setBrush(m_crProgressBar);
painter.drawPie(this->rect(), 90 * 16, -m_nValue * m_fStep * 16);

m_crProgressBar:圓形進(jìn)度條顏色值,默認(rèn)是 QColor(16, 142, 233);

4.文本繪制

圖形繪制完成后,最后繪制文本展示

painter.setFont(m_font);
painter.setPen(m_crText);
painter.drawText(rectInCircl, Qt::AlignHCenter| Qt::AlignVCenter, m_sValue);

數(shù)值計(jì)算

在圓形進(jìn)度條中需要設(shè)置以下幾種計(jì)算

1.計(jì)算步長

m_fStep = 360.0/ (maximum - minimum);

根據(jù)步長大小,計(jì)算每次移動的扇面面積

painter.drawPie(this->rect(), 90 * 16, -m_nValue * m_fStep * 16);

 通常情況下,圓形進(jìn)度條的走向一般是順時(shí)針,但是,在圓形中走向卻是逆時(shí)針方向,所以在進(jìn)行扇形面積計(jì)算時(shí),會從90°逆向繪制。

2.實(shí)時(shí)數(shù)據(jù)計(jì)算

由外界調(diào)用者傳入實(shí)時(shí)變化數(shù)據(jù),并計(jì)算當(dāng)前加載的百分比數(shù)值。

float fNum = (value*1.0) / (m_nMaxMum - m_nMinMum);
m_sValue = QString::number(fNum*100, 'f', 0) + QStringLiteral("%");

其中,m_sValue該變量是應(yīng)用到drawText中文本繪制的。

到這里,簡單的圓形進(jìn)度條就繪制完成了~

到此這篇關(guān)于Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼的文章就介紹到這了,更多相關(guān)Qt 圓形進(jìn)度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++實(shí)現(xiàn)線性單鏈表的示例代碼

    C/C++實(shí)現(xiàn)線性單鏈表的示例代碼

    使用鏈存儲結(jié)構(gòu)的線性存儲結(jié)構(gòu)為線性單鏈表,本文將分別利用C語言和C++實(shí)現(xiàn)線性單鏈表,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • C++中的String的常用函數(shù)用法

    C++中的String的常用函數(shù)用法

    這篇文章主要介紹了C語言中String的常用函數(shù)用法,對學(xué)習(xí)String的小伙伴有一定的參考價(jià)值,感興趣的小伙伴可以借鑒一下
    2023-03-03
  • OpenCV實(shí)現(xiàn)可分離濾波

    OpenCV實(shí)現(xiàn)可分離濾波

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)可分離濾波,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言用遞歸函數(shù)對素?cái)?shù)進(jìn)行判斷流程

    C語言用遞歸函數(shù)對素?cái)?shù)進(jìn)行判斷流程

    素?cái)?shù)判斷是編程語言學(xué)習(xí)過程中一個(gè)老生常談的話題,而它的實(shí)現(xiàn)也有多種算法,包括經(jīng)典的試除法(以及試除法的幾種優(yōu)化),進(jìn)階的素?cái)?shù)表篩選法,埃拉托斯特尼篩法和歐拉篩法(以及它們的優(yōu)化)等。對以上算法感興趣的朋友們,不妨搜索“素?cái)?shù)判斷的N種境界”來學(xué)習(xí)了解
    2022-09-09
  • C++中DeviceIoCteatol的用法實(shí)例

    C++中DeviceIoCteatol的用法實(shí)例

    這篇文章主要介紹了C++中DeviceIoCteatol的用法實(shí)例,對于學(xué)習(xí)C++針對硬件的操作有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++中的狀態(tài)模式全解析

    C++中的狀態(tài)模式全解析

    這篇文章給大家介紹了C++中的狀態(tài)模式,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-01-01
  • C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法

    C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法

    今天小編就為大家分享一篇關(guān)于C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • OpenCV圖像幾何變換之透視變換

    OpenCV圖像幾何變換之透視變換

    這篇文章主要為大家詳細(xì)介紹了OpenCV圖像幾何變換之透視變換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++淺析缺省參數(shù)的使用

    C++淺析缺省參數(shù)的使用

    所謂缺省參數(shù),顧名思義,就是在聲明函數(shù)的某個(gè)參數(shù)的時(shí)候?yàn)橹付ㄒ粋€(gè)默認(rèn)值,在調(diào)用該函數(shù)的時(shí)候如果采用該默認(rèn)值,你就無須指定該參數(shù)。缺省參數(shù)使用主要規(guī)則:調(diào)用時(shí)你只能從最后一個(gè)參數(shù)開始進(jìn)行省略,換句話說,如果你要省略一個(gè)參數(shù),你必須省略它后面所有的參數(shù)
    2022-05-05
  • C++11中移動構(gòu)造函數(shù)案例代碼

    C++11中移動構(gòu)造函數(shù)案例代碼

    C++11 標(biāo)準(zhǔn)中為了滿足用戶使用左值初始化同類對象時(shí)也通過移動構(gòu)造函數(shù)完成的需求,新引入了 std::move() 函數(shù),它可以將左值強(qiáng)制轉(zhuǎn)換成對應(yīng)的右值,由此便可以使用移動構(gòu)造函數(shù),對C++11移動構(gòu)造函數(shù)相關(guān)知識感興趣的朋友一起看看吧
    2023-01-01

最新評論

包头市| 海伦市| 伊川县| 古交市| 甘德县| 伊川县| 郎溪县| 丰镇市| 丹棱县| 利川市| 肃南| 库车县| 曲松县| 元氏县| 楚雄市| 武义县| 四子王旗| 乌鲁木齐县| 霍林郭勒市| 清镇市| 佳木斯市| 白河县| 吉木乃县| 邛崃市| 凤山县| 西贡区| 兴山县| 柳河县| 伊吾县| 咸阳市| 博兴县| 西乌珠穆沁旗| 特克斯县| 陇南市| 册亨县| 毕节市| 孟州市| 图们市| 宜兰县| 兴安县| 察隅县|