Roson讲Qt #10 QProgressBar(进度条)

我就是我 2022-09-07 09:13 317阅读 0赞

1.什么是QProgressBar

  1. QProgressBar小部件提供一个水平或垂直的进度条。
  2. 进度条用于指示用户操作的进度,并向用户保证应用程序仍在运行。
  3. 进度条使用步骤的概念。您可以通过指定最小和最大可能的步骤值来设置它,当您稍后给它当前步骤值时,它将显示已经完成的步骤的百分比。百分比的计算方法是将progress (value() - minimum())除以maximum() - minimum()。
  4. 您可以使用setMinimum()和setMaximum指定最小和最大步骤数。当前的步骤数是用setValue()设置的。进度条可以用reset()重绕到开始。
  5. 如果最小值和最大值都设置为0,则条形图显示的是繁忙指示器,而不是步骤的百分比。这是有用的,例如,当使用QNetworkAccessManager下载项目时,他们无法确定正在下载的项目的大小。

下面的是不同风格的进度条:
2021082221072913.png

2.QProgressBar使用

2.1 设置进度条数值的显示格式

  1. ui.progressBar->setMaximum(50);
  2. ui.progressBar->setMinimum(0);
  3. ui.progressBar->setFormat("%p%");

使用“%p%”时,数值为当前值占最大值的百分比,数值最大会显示为100%

20210822212548273.png

  1. ui.progressBar->setMaximum(50);
  2. ui.progressBar->setMinimum(0);
  3. ui.progressBar->setFormat("%v%");

使用“%v%”时,数值为setValue传入的值。

20210822212508787.png

  1. ui.progressBar->setMaximum(50);
  2. ui.progressBar->setMinimum(0);
  3. ui.progressBar->setFormat("%m%");

使用“%m%”时,数值始终为设置的最大值,这里的示例会一直显示50%,不管进度条走到哪里。

2021082221280521.png

2.2 设置进度条方向

  1. ui.progressBar->setOrientation(Qt::Vertical);

20210822213625216.png

setOrientation(Qt::Orientation)的参数只有有2个值可选:

  • Qt::Horizontal (默认值)
  • Qt::Vertical.

2.3 利用QTimer动态设置进度条的值

  1. #ifndef QAPP8211_H
  2. #define QAPP8211_H
  3. #include <QtWidgets/QMainWindow>
  4. #include "ui_qapp8211.h"
  5. class QApp8211 : public QMainWindow
  6. {
  7. Q_OBJECT
  8. public:
  9. QApp8211(QWidget *parent = 0);
  10. ~QApp8211();
  11. public slots:
  12. void OnTimer();
  13. private:
  14. Ui::QApp8211Class ui;
  15. int m_percent;
  16. };
  17. #endif // QAPP8211_H
  18. #include "qapp8211.h"
  19. #include "QDebug"
  20. #include "QCalendarWidget"
  21. #include <windows.h>
  22. #include "QTimer"
  23. QApp8211::QApp8211(QWidget *parent)
  24. : QMainWindow(parent)
  25. {
  26. ui.setupUi(this);
  27. m_percent = 0;
  28. QTimer *timer = new QTimer(this);
  29. timer->start(200);
  30. connect(timer,SIGNAL(timeout()),this,SLOT(OnTimer()));
  31. ui.progressBar->setMaximum(50);
  32. ui.progressBar->setMinimum(0);
  33. //获取当前进度
  34. ui.progressBar->value();
  35. }
  36. QApp8211::~QApp8211()
  37. {
  38. }
  39. void QApp8211::OnTimer()
  40. {
  41. ui.progressBar->setValue(m_percent);
  42. m_percent += 2;
  43. }

2.4 其它基本用法

  1. //设置进度的最大值,一般是0-100,但这不是必须的。
  2. ui.progressBar->setMaximum(50);
  3. ui.progressBar->setMinimum(0);
  4. //设置当前进度
  5. ui.progressBar->setValue(50);
  6. //获取当前进度
  7. ui.progressBar->value();
  8. //重置进度条
  9. ui.progressBar->reset();

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读