Qt自定義控件實(shí)現(xiàn)線條型加載條
本文實(shí)例為大家分享了Qt自定義控件實(shí)現(xiàn)線條型加載條的具體代碼,供大家參考,具體內(nèi)容如下
上效果圖:

思路:先畫(huà)一個(gè)線條,然后旋轉(zhuǎn)坐標(biāo)系再畫(huà)其他線條,突出顏色的線條可以畫(huà)死再旋轉(zhuǎn),也可以按照角度遞增讓特定線畫(huà)突出顏色(這里使用的是這種)。
LoadingBarA::LoadingBarA(QWidget *parent) :
QWidget(parent)
{
timer = new QTimer(this); //定時(shí)器
timer->setInterval(50);
connect(timer,QTimer::timeout,this,[=](){
if(pointRect<=rectCount){
pointRect++;
}else{
pointRect = pointRect%rectCount;
}
update();
});
}
void LoadingBarA::paintEvent(QPaintEvent *event){ //重繪事件
int width = this->width();
int height = this->height();
int side = qMin(width, height);
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
painter.translate(width / 2, height / 2);
painter.scale(side / 200.0, side / 200.0);
float degree = 360.0/rectCount; //rectCount:共有多少根線條
for(int i =0;i<rectCount;i++){
painter.rotate(degree);
if(i == pointRect - 1){
drawRect(&painter,darkColor); //突出顏色
}else{
drawRect(&painter,lightColor);//非突出顏色
}
}
}
void LoadingBarA::drawRect(QPainter* painter,QColor color){//畫(huà)線條
painter->save();
painter->setPen(Qt::NoPen);
painter->setBrush(color);
QRect rect(arcLength,-rectHeight/2,rectWidth,rectHeight);
painter->drawRoundedRect(rect,rectHeight/2,rectHeight/2);
painter->restore();
}
void LoadingBarA::setDarkColor(QColor tempColor){
this->darkColor = tempColor;
update();
}
void LoadingBarA::setLightColor(QColor lightColor){
this->lightColor = lightColor;
update();
}
void LoadingBarA::setRectWidth(int l){
this->rectWidth = l;
update();
}
void LoadingBarA::setRectHeight(int l){
this->rectHeight = l;
update();
}
void LoadingBarA::setArcLength(int l){
this->arcLength = l;
update();
}
void LoadingBarA::setRectCount(int l){
this->rectCount = l;
update();
}
void LoadingBarA::startLoading(){ //設(shè)置開(kāi)始
timer->start();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言進(jìn)度條的實(shí)現(xiàn)原理詳解
這篇文章主要介紹了C語(yǔ)言進(jìn)度條的實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
詳解散列表算法與其相關(guān)的C語(yǔ)言實(shí)現(xiàn)
這篇文章主要介紹了詳解散列表算法與其相關(guān)的C語(yǔ)言實(shí)現(xiàn),平時(shí)經(jīng)常出現(xiàn)于各大考試競(jìng)賽與程序員面試題目當(dāng)中,需要的朋友可以參考下2015-08-08
DEV?C++源碼編譯后控制臺(tái)輸出中文亂碼問(wèn)題解決
本文主要介紹了DEV?C++源碼編譯后控制臺(tái)輸出中文亂碼問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
C語(yǔ)言static修飾函數(shù)詳細(xì)解析
以下是對(duì)C語(yǔ)言中的static修飾函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08
C語(yǔ)言實(shí)現(xiàn)繪制立體餅圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用C語(yǔ)言實(shí)現(xiàn)繪制立體餅圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03

