Qt使用QPainter實(shí)現(xiàn)自定義圓形進(jìn)度條
一、項(xiàng)目介紹
本文介紹利用QPainter實(shí)現(xiàn)自定義圓形進(jìn)度條。
二、項(xiàng)目基本配置
新建一個(gè)Qt案例,項(xiàng)目名稱為“RoundprogressbarTest”,基類選擇“QWidget”,點(diǎn)擊選中創(chuàng)建UI界面復(fù)選框,完成項(xiàng)目創(chuàng)建。
三、UI界面設(shè)置
UI界面如下:

為簡單起見,這里只設(shè)計(jì)兩個(gè)控件:
| 序號 | 名稱 | 類型 | 屬性 |
|---|---|---|---|
| ① | pushButton | QPushButton | text:Start |
| ② | gridLayout | QGridLayout | / |
四、主程序?qū)崿F(xiàn)
4.1 roundprogressbar.h和roundprogressbar.cpp
由于roundprogressbar.h和roundprogressbar.cpp代碼量較大,這里不進(jìn)行展示,僅作簡要說明。
函數(shù)如下:
//設(shè)置初始角度,順時(shí)針逆時(shí)針
void setdefault(int,bool);
//設(shè)置外圈寬度
void setOutterBarWidth(float);
//設(shè)置內(nèi)圈寬度
void setInnerBarWidth(float);
//設(shè)置范圍
void setRange(float, float);
//設(shè)置當(dāng)前值
void setValue(float);
//設(shè)置外圈顏色
void setOutterColor(const QColor&);
//設(shè)置內(nèi)圈漸變色
void setInnerColor(const QColor&,const QColor&);
void setInnerColor(const QColor&);
//設(shè)置默認(rèn)文字顏色
void setDefaultTextColor(const QColor&);
//設(shè)置控制命令
void setControlFlags(int);
//設(shè)置顯示數(shù)字精度
void setPrecision(int);
在構(gòu)造函數(shù)中進(jìn)行了如下初始化設(shè)定:
//設(shè)置初始角度,順時(shí)針逆時(shí)針
setdefault(90,true);
//設(shè)置默認(rèn)外圈寬度
setOutterBarWidth(18);
//設(shè)置默認(rèn)內(nèi)圈寬度
setInnerBarWidth(16);
//設(shè)置默認(rèn)范圍
setRange(0,100);
//設(shè)置默認(rèn)值
setValue(75);
//設(shè)置外圈顏色
setOutterColor(QColor(233,248,248));
//設(shè)置默認(rèn)漸變色
setInnerColor(QColor(49, 177, 190),QColor(133, 243, 244));
//設(shè)置默認(rèn)文字顏色
setDefaultTextColor(QColor(49,177,190));
//設(shè)置默認(rèn)精度
setPrecision(0);
//設(shè)置內(nèi)圈默認(rèn)文字樣式
setInnerDefaultTextStyle(RoundProgressBar::percent);
設(shè)置初始化角度為90度,順時(shí)針,設(shè)置外圈寬度為18,內(nèi)圈寬度為18;設(shè)置默認(rèn)范圍為0-100,設(shè)置默認(rèn)值為75,設(shè)置外圈顏色、漸變色、文本顏色和默認(rèn)精度為0(無小數(shù))設(shè)置內(nèi)圈文字樣式為percent(百分比樣式)。
4.2 widget.h頭文件
頭文件中引入roundprogressbar.h頭文件,按鈕點(diǎn)擊槽函數(shù)和定時(shí)器對應(yīng)的槽函數(shù)、timer對象和bar1對象:
private slots:
void setText();
void on_pushButton_clicked();
private:
RoundProgressBar* bar1;
QTimer timer;
int i=0;
4.3 widget.cpp源文件
源文件中在構(gòu)造函數(shù)中定義圓形進(jìn)度條和定時(shí)器,將定時(shí)器timeout信號和槽函數(shù)setText連接:
//*********************** RoundProgressBar ************************
bar1=new RoundProgressBar(this);
bar1->setOutterBarWidth(20);
bar1->setInnerBarWidth(20);
bar1->setValue(0);//設(shè)置默認(rèn)值為0
bar1->setControlFlags(RoundProgressBar::all);
ui->gridLayout->addWidget(bar1,0,0);
//計(jì)時(shí)
timer.setInterval(100);//設(shè)置計(jì)時(shí)間隔為0.1s
connect(&timer,&QTimer::timeout,this,&Widget::setText);
在析構(gòu)函數(shù)中停止定時(shí)器:
Widget::~Widget()
{
if(timer.isActive())
timer.stop();
delete ui;
}
兩個(gè)槽函數(shù)定義如下:
//點(diǎn)擊
void Widget::on_pushButton_clicked()
{
timer.start();
}
void Widget::setText()
{
bar1->setValue(i++);
bar1->repaint();
if(i>100) //100停止
{
timer.stop();
}
}
五、效果演示
完整效果如下:

到此這篇關(guān)于Qt使用QPainter實(shí)現(xiàn)自定義圓形進(jìn)度條的文章就介紹到這了,更多相關(guān)Qt自定義進(jìn)度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt實(shí)現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)
這篇文章主要介紹了在Qt中實(shí)現(xiàn)將QTableWidget或者QTableView中的數(shù)據(jù)直接導(dǎo)出的示例代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-01-01
C++運(yùn)行時(shí)獲取類型信息的type_info類與bad_typeid異常
這篇文章主要介紹了C++運(yùn)行時(shí)獲取類型信息的type_info類與bad_typeid異常,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01
使用Qt/C++實(shí)現(xiàn)WGS84,高德GCJ-02與百度BD-09坐標(biāo)系間相互轉(zhuǎn)化
這篇文章主要為大家詳細(xì)介紹了如何使用Qt實(shí)現(xiàn)WGS84、高德GCJ-02與百度BD-09坐標(biāo)系間相互轉(zhuǎn)化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-07-07
C++中SetConsoleCursorPosition()移動(dòng)光標(biāo)函數(shù)的用法大全
這篇文章主要介紹了C++中SetConsoleCursorPosition()移動(dòng)光標(biāo)函數(shù)的用法大全,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
C語言指針如何實(shí)現(xiàn)字符串逆序反轉(zhuǎn)
這篇文章主要介紹了C語言指針如何實(shí)現(xiàn)字符串逆序反轉(zhuǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
C++使用OpenCV進(jìn)行物體識別與檢測的三種方法
物體識別與檢測是計(jì)算機(jī)視覺中的核心任務(wù)之一,它被廣泛應(yīng)用于自動(dòng)駕駛、安防監(jiān)控、圖像分析等領(lǐng)域,通過物體檢測技術(shù),計(jì)算機(jī)能夠從圖像中識別出特定的物體或目標(biāo),本文將介紹如何使用 C++ 和 OpenCV 庫進(jìn)行物體識別與檢測,需要的朋友可以參考下2025-04-04
VC基于ADO技術(shù)訪問數(shù)據(jù)庫的方法
這篇文章主要介紹了VC基于ADO技術(shù)訪問數(shù)據(jù)庫的方法,較為詳細(xì)的分析了VC使用ADO操作數(shù)據(jù)庫的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

