【Qt 学习笔记】Qt常用控件 | 显示类控件 | Progress Bar的使用及说明

Duck Bro 2024-07-11 08:35:01 阅读 70


博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍


Qt常用控件 | 显示类控件 | Progress Bar的使用及说明

文章编号:Qt 学习笔记 / 26

文章目录

Qt常用控件 | 显示类控件 | Progress Bar的使用及说明一、QProgressBar介绍1. 简介2. 常用属性及说明

二、QProgressBar样式1. Horizontal2. Vertical

二、QProgressBar的使用(代码示例)1. 设置进度条按时间增长2. 设置红色的进度条


一、QProgressBar介绍

1. 简介

QProgressBar是一个Qt框架中的控件,用于显示进度条。 它可以用于表示任务的完成进度或操作的进度。

QProgressBar可以在水平或垂直方向上显示进度条。 它可以通过设置最小值和最大值来指定进度条的范围。

QProgressBar提供了一些方法和属性,可以方便地设置进度条的值、范围、样式等。可以通过在Qt Designer中使用QProgressBar,或者在代码中创建QProgressBar对象,然后使用各种方法和属性来设置进度条的样式和行为。

在这里插入图片描述

2. 常用属性及说明

属性 说明
minimum 进度条最⼩值
maximum 进度条最⼤值
value 进度条当前值
alignment ⽂本在进度条中的对⻬⽅式.

• Qt::AlignLeft : 左对⻬

• Qt::AlignRight : 右对⻬

• Qt::AlignCenter : 居中对⻬

• Qt::AlignJustify : 两端对⻬

textVisible 进度条的数字是否可⻅.
orientation 进度条的⽅向是⽔平还是垂直
invertAppearance 是否是朝反⽅向增⻓进度
textDirection ⽂本的朝向.
format 展⽰的数字格式.

• %p :表⽰进度的百分⽐(0-100)

• %v :表⽰进度的数值(0-100)

• %m :表⽰剩余时间(以毫秒为单位)

• %t :表⽰总时间(以毫秒为单位)


二、QProgressBar样式

1. Horizontal

在这里插入图片描述

2. Vertical

在这里插入图片描述


二、QProgressBar的使用(代码示例)

1. 设置进度条按时间增长

在界⾯上创建进度条(progressBar),并修改value值为0

在这里插入图片描述

修改 widget.h,创建 QTimer 和 handle 槽函数.

<code>public:

Widget(QWidget *parent = nullptr);

~Widget();

void handle();

private:

Ui::Widget *ui;

QTimer * timer;

修改 widget.cpp, 初始化 QTimer

在这里插入图片描述

<code>此处设置 100ms 触发⼀次 timeout 信号. 也就是⼀秒钟触发 10 次

Widget::Widget(QWidget *parent)

: QWidget(parent)

, ui(new Ui::Widget)

{

ui->setupUi(this);

ui->progressBar->setValue(0);

timer=new QTimer(this);

connect(timer,&QTimer::timeout,this,&Widget::handle);

timer->start(100);

}

修改 widget.cpp,编辑handle槽函数

在这里插入图片描述

<code>void Widget::handle()

{

int value=ui->progressBar->value();

if(value>=100)

{

timer->stop();

return;

}

ui->progressBar->setValue(value+1);

}

运行程序,查看结果进度条开始增长到100停止

在这里插入图片描述

文件代码:

<code>#ifndef WIDGET_H

#define WIDGET_H

#include <QWidget>

#include <QTimer>

QT_BEGIN_NAMESPACE

namespace Ui { class Widget; }

QT_END_NAMESPACE

class Widget : public QWidget

{

Q_OBJECT

public:

Widget(QWidget *parent = nullptr);

~Widget();

void handle();

private:

Ui::Widget *ui;

QTimer * timer;

};

#endif // WIDGET_H

#include "widget.h"

#include "ui_widget.h"

Widget::Widget(QWidget *parent)

: QWidget(parent)

, ui(new Ui::Widget)

{

ui->setupUi(this);

ui->progressBar->setValue(0);

timer=new QTimer(this);

connect(timer,&QTimer::timeout,this,&Widget::handle);

timer->start(100);

}

Widget::~Widget()

{

delete ui;

}

void Widget::handle()

{

int value=ui->progressBar->value();

if(value>=100)

{

timer->stop();

return;

}

ui->progressBar->setValue(value+1);

}

2. 设置红色的进度条

在Qt中,可以使⽤ styleSheet 通过样式来修改进度条的颜⾊

创建一个进度条

在这里插入图片描述

右键点击进度条,选择改变样式表(或者在 Qt Designer 右侧的属性编辑器中, 找到 QWidget 的 styleSheet 属性.)

在这里插入图片描述

输入以下代码<code>QProgressBar::chunk {background-color: #FF0000;},其中的 chunk 是选中进度条中的每个 “块” . 使⽤ QProgressBar::text 则可以选中⽂本

在这里插入图片描述

并将 QProcessBar 的 alignment 属性设置为垂直⽔平居中

在这里插入图片描述

执⾏程序,就得到了红色的进度条

在这里插入图片描述


在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。