服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt使用QPainter实现自定义圆形进度条

Qt使用QPainter实现自定义圆形进度条

2022-12-25 16:07wendy_ya C/C++

这篇文章主要介绍了Qt如何使用QPainter实现自定义圆形进度条功能,文中的示例代码讲解详细,对我们学习Qt有一定的帮助,需要的可以参考一下

一、项目介绍

本文介绍利用QPainter实现自定义圆形进度条。

二、项目基本配置

新建一个Qt案例,项目名称为“RoundprogressbarTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设置

UI界面如下:

Qt使用QPainter实现自定义圆形进度条

为简单起见,这里只设计两个控件:

序号 名称 类型 属性
pushButton QPushButton text:Start
gridLayout QGridLayout /

四、主程序实现

4.1 roundprogressbar.h和roundprogressbar.cpp

由于roundprogressbar.h和roundprogressbar.cpp代码量较大,这里不进行展示,仅作简要说明。

函数如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//设置初始角度,顺时针逆时针
void setdefault(int,bool);
//设置外圈宽度
void setOutterBarWidth(float);
//设置内圈宽度
void setInnerBarWidth(float);
//设置范围
void setRange(float, float);
//设置当前值
void setValue(float);
//设置外圈颜色
void setOutterColor(const QColor&);
//设置内圈渐变色
void setInnerColor(const QColor&,const QColor&);
void setInnerColor(const QColor&);
//设置默认文字颜色
void setDefaultTextColor(const QColor&);
//设置控制命令
void setControlFlags(int);
//设置显示数字精度
void setPrecision(int);

在构造函数中进行了如下初始化设定:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//设置初始角度,顺时针逆时针
setdefault(90,true);
//设置默认外圈宽度
setOutterBarWidth(18);
//设置默认内圈宽度
setInnerBarWidth(16);
//设置默认范围
setRange(0,100);
//设置默认值
setValue(75);
//设置外圈颜色
setOutterColor(QColor(233,248,248));
//设置默认渐变色
setInnerColor(QColor(49, 177, 190),QColor(133, 243, 244));
//设置默认文字颜色
setDefaultTextColor(QColor(49,177,190));
//设置默认精度
setPrecision(0);
//设置内圈默认文字样式
setInnerDefaultTextStyle(RoundProgressBar::percent);

设置初始化角度为90度,顺时针,设置外圈宽度为18,内圈宽度为18;设置默认范围为0-100,设置默认值为75,设置外圈颜色、渐变色、文本颜色和默认精度为0(无小数)设置内圈文字样式为percent(百分比样式)。

4.2 widget.h头文件

头文件中引入roundprogressbar.h头文件,按钮点击槽函数和定时器对应的槽函数、timer对象和bar1对象:

?
1
2
3
4
5
6
7
8
private slots:
    void setText();
    void on_pushButton_clicked();
 
private:
    RoundProgressBar* bar1;
    QTimer timer;
     int i=0;

4.3 widget.cpp源文件

源文件中在构造函数中定义圆形进度条和定时器,将定时器timeout信号和槽函数setText连接:

?
1
2
3
4
5
6
7
8
9
10
11
//*********************** RoundProgressBar ************************
bar1=new RoundProgressBar(this);
bar1->setOutterBarWidth(20);
bar1->setInnerBarWidth(20);
bar1->setValue(0);//设置默认值为0
bar1->setControlFlags(RoundProgressBar::all);
ui->gridLayout->addWidget(bar1,0,0);
 
//计时
timer.setInterval(100);//设置计时间隔为0.1s
connect(&timer,&QTimer::timeout,this,&Widget::setText);

在析构函数中停止定时器:

?
1
2
3
4
5
6
Widget::~Widget()
{
    if(timer.isActive())
        timer.stop();
    delete ui;
}

两个槽函数定义如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//点击
void Widget::on_pushButton_clicked()
{
    timer.start();
}
 
void Widget::setText()
{
    bar1->setValue(i++);
    bar1->repaint();
    if(i>100)   //100停止
    {
        timer.stop();
    }
}

五、效果演示

完整效果如下:

Qt使用QPainter实现自定义圆形进度条

到此这篇关于Qt使用QPainter实现自定义圆形进度条的文章就介绍到这了,更多相关Qt自定义进度条内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://wendy.blog.csdn.net/article/details/124378255

延伸 · 阅读

精彩推荐
  • C/C++Qt6.0+vs2019环境配置的实现教程

    Qt6.0+vs2019环境配置的实现教程

    这篇文章主要介绍了Qt6.0+vs2019环境配置的实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    luoyayun3615902021-10-27
  • C/C++C语言实现UDP通信

    C语言实现UDP通信

    这篇文章主要为大家详细介绍了C语言实现UDP通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    阿宁(xin)。9962022-12-24
  • C/C++数据结构之伸展树详解

    数据结构之伸展树详解

    这篇文章主要介绍了数据结构之伸展树详解,本文对伸展树(Splay Tree)的单旋转操作、一字型旋转、之字形旋转区间操作等理论知识做了讲解,并给出实现代...

    C语言程序设计8212021-01-30
  • C/C++C语言单链队列的表示与实现实例详解

    C语言单链队列的表示与实现实例详解

    这篇文章主要介绍了C语言单链队列的表示与实现,对于研究数据结构与算法的朋友来说很有参考借鉴价值,需要的朋友可以参考下...

    C语言程序设计12232021-01-21
  • C/C++C++实现投骰子的随机游戏

    C++实现投骰子的随机游戏

    这篇文章主要为大家详细介绍了C++实现投骰子的随机游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    黑盒子Key5132022-11-02
  • C/C++C语言JNI的动态注册详解

    C语言JNI的动态注册详解

    这篇文章主要介绍了JAVA JNI的动态注册,这里提供简单实例代码,需要的朋友可以参考下,小编觉得写的还不错,希望能给你带来帮助...

    怪叔叔萝莉控10482021-12-20
  • C/C++C语言函数的递归调用详情

    C语言函数的递归调用详情

    这篇文章主要介绍了C语言函数的递归调用详情,递归做为一种算法在程序设计语言中广泛应用,主要的思考方式就是大事化小,下文具体的相关介绍,需要...

    ​​​​​​​不知名小7202022-11-17
  • C/C++C语言数据结构之算法的时间复杂度

    C语言数据结构之算法的时间复杂度

    这篇文章主要介绍了C语言数据结构之算法的时间复杂度,文章基于c语言的相关资料展开详细介绍,具有一定的参价值,需要的小伙伴可以参考一下...

    hqx7352022-11-21