Qt常用控件——ProgressBar

14 篇文章 0 订阅

QProgressBar核心属性

QProgressBar表示一个进度条

属性说明
minimum进度条最小值
maximum进度条最大值
value进度条当前值
alignment文本在进度条的对齐方式:
Qt::AlignLeft:左对齐
Qt::AlignRight:右对齐
Qt::AlignCenter:居中对齐
Qt::AlignJustify:两端对齐
textVisible进度条数字是否可见
orientation进度条的方向是水平还是垂直
invertAppearance是否朝反方向增长进度
textDirection文本朝向
format展示数字格式:
%p:表示进度的百分比
%v:表示进度的数值
%m:表示剩余时间(毫秒为单位)
%t:表示总时间(毫秒为单位)

进度条代码演示

创建一个进度条,让进度条随着时间增长(每100ms,进度条数值加一)

image-20240912203928114

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    timer = new QTimer(this);

    connect(timer, &QTimer::timeout, this, &Widget::handle);
    //启动定时器(在connect之后)
    timer->start(50);
}


Widget::~Widget()
{
    delete ui;
}

void Widget::handle()
{
    //获取当前进度条值
    int val = ui->progressBar->value();
    if(val >= 100)
    {
        //进度条满  停止计算器
        timer->stop();
        return;
    }
    ui->progressBar->setValue(val + 1);

}

GIF 2024-9-12 20-47-55

小发现:在保存gif图片的时候,发现这个gif工具的进度条,竟如此相像

image-20240912205020760

关于头文件包含

此时这个QTimer的头文件是包含着widget.h里面的,因为需要this指针访问到,让其成为成员变量

image-20240912205454833

如果将QTimer头文件放入widget.cpp,虽然widget.h里面需要使用到QTimer这个类,但是这里发现并没有报错,程序能运行

image-20240912205643079

这是因为Qt内部提供了一个专门的头文件,这里面包含了Qt所有类的前置声明,例如:

class Widget
class QTimer
class QPushButton

这个头文件一般不会直接接触到,但是包含其他Qt的头文件,都会间接包含到这个头文件。

所以Widget类前面已经提供QTimer类的声明的话,此时就能在Widget里面声明QTimer的指针/引用成员,但是如果在后续中想要创建示例实例,还是需要包含QTimer的头文件的(里面包含了QTimer类的详细定义)。

Qt引入这个技巧,主要是提高编译速度,因为C/C++代码的编译速度,横向对比其他语言,是很慢的。
这个慢和#include头文件,有着直接关系,#include是文本拼接,但是include关系是错综复杂的,头文件替换展开十分庞大。
因此,尽可能减少头文件的个数,就可以有效减少编译时间。

Qt就使用class前置声明的方式,来尽量减少头文件的包含。

但是在实际开发当中,还是该包含就包含。

颜色更改

image-20240912212235691

点击确认设置完毕之后,发现这个进度条虽然变成红色了,但是这个数字位置发送了变化,这个估摸着是Qt的bug

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加法器+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值