QProgressBar Class

The QProgressBar widget provides a horizontal or vertical progress bar. More...

Header: #include <QProgressBar>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QWidget

Public Types

enum Direction { TopToBottom, BottomToTop }

Properties

Public Functions

QProgressBar(QWidget *parent = nullptr)
virtual ~QProgressBar()
Qt::Alignment alignment() const
QString format() const
bool invertedAppearance() const
bool isTextVisible() const
int maximum() const
int minimum() const
Qt::Orientation orientation() const
void resetFormat()
void setAlignment(Qt::Alignment alignment)
void setFormat(const QString &format)
void setInvertedAppearance(bool invert)
void setTextDirection(QProgressBar::Direction textDirection)
void setTextVisible(bool visible)
virtual QString text() const
QProgressBar::Direction textDirection() const
int value() const

Reimplemented Public Functions

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Public Slots

void reset()
void setMaximum(int maximum)
void setMinimum(int minimum)
void setOrientation(Qt::Orientation)
void setRange(int minimum, int maximum)
void setValue(int value)

Signals

void valueChanged(int value)

Protected Functions

virtual void initStyleOption(QStyleOptionProgressBar *option) const

Reimplemented Protected Functions

virtual bool event(QEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Detailed Description

A progress bar is used to give the user an indication of the progress of an operation and to reassure them that the application is still running.

The progress bar uses the concept of steps. You set it up by specifying the minimum and maximum possible step values, and it will display the percentage of steps that have been completed when you later give it the current step value. The percentage is calculated by dividing the progress (value() - minimum()) divided by maximum() - minimum().

You can specify the minimum and maximum number of steps with setMinimum() and setMaximum. The current number of steps is set with setValue(). The progress bar can be rewound to the beginning with reset().

If minimum and maximum both are set to 0, the bar shows a busy indicator instead of a percentage of steps. This is useful, for example, when using QNetworkAccessManager to download items when they are unable to determine the size of the item being downloaded.

See also QProgressDialog.

Member Type Documentation

enum QProgressBar::Direction

Specifies the reading direction of the text for vertical progress bars.

ConstantValueDescription
QProgressBar::TopToBottom0The text is rotated 90 degrees clockwise.
QProgressBar::BottomToTop1The text is rotated 90 degrees counter-clockwise.

Note that whether or not the text is drawn is dependent on the style. Currently CleanLooks and Plastique draw the text. Mac, Windows and WindowsVista style do not.

See also textDirection.

Property Documentation

alignment : Qt::Alignment

This property holds the alignment of the progress bar

Access functions:

Qt::Alignment alignment() const
void setAlignment(Qt::Alignment alignment)

format : QString

This property holds the string used to generate the current text

%p - is replaced by the percentage completed. %v - is replaced by the current value. %m - is replaced by the total number of steps.

The default value is "%p%".

Access functions:

QString format() const
void setFormat(const QString &format)
void resetFormat()

See also text().

invertedAppearance : bool

This property holds whether or not a progress bar shows its progress inverted

If this property is true, the progress bar grows in the other direction (e.g. from right to left). By default, the progress bar is not inverted.

Access functions:

bool invertedAppearance() const
void setInvertedAppearance(bool invert)

See also orientation and layoutDirection.

maximum : int

This property holds the progress bar's maximum value

When setting this property, the minimum is adjusted if necessary to ensure that the range remains valid. If the current value falls outside the new range, the progress bar is reset with reset().

Access functions:

int maximum() const
void setMaximum(int maximum)

minimum : int

This property holds the progress bar's minimum value

When setting this property, the maximum is adjusted if necessary to ensure that the range remains valid. If the current value falls outside the new range, the progress bar is reset with reset().

Access functions:

int minimum() const
void setMinimum(int minimum)

orientation : Qt::Orientation

This property holds the orientation of the progress bar

The orientation must be Qt::Horizontal (the default) or Qt::Vertical.

Access functions:

Qt::Orientation orientation() const
void setOrientation(Qt::Orientation)

See also invertedAppearance and textDirection.

[read-only] text : const QString

This property holds the descriptive text shown with the progress bar

The text returned is the same as the text displayed in the center (or in some styles, to the left) of the progress bar.

The progress shown in the text may be smaller than the minimum value, indicating that the progress bar is in the "reset" state before any progress is set.

In the default implementation, the text either contains a percentage value that indicates the progress so far, or it is blank because the progress bar is in the reset state.

Access functions:

virtual QString text() const

textDirection : Direction

This property holds the reading direction of the text for vertical progress bars

This property has no impact on horizontal progress bars. By default, the reading direction is QProgressBar::TopToBottom.

Access functions:

QProgressBar::Direction textDirection() const
void setTextDirection(QProgressBar::Direction textDirection)

See also orientation and textVisible.

textVisible : bool

This property holds whether the current completed percentage should be displayed

This property may be ignored by the style (e.g., QMacStyle never draws the text).

Access functions:

bool isTextVisible() const
void setTextVisible(bool visible)

See also textDirection.

value : int

This property holds the progress bar's current value

Attempting to change the current value to one outside the minimum-maximum range has no effect on the current value.

Access functions:

int value() const
void setValue(int value)

Notifier signal:

void valueChanged(int value)

Member Function Documentation

[explicit] QProgressBar::QProgressBar(QWidget *parent = nullptr)

Constructs a progress bar with the given parent.

By default, the minimum step value is set to 0, and the maximum to 100.

See also setRange().

[virtual noexcept] QProgressBar::~QProgressBar()

Destructor.

[override virtual protected] bool QProgressBar::event(QEvent *e)

Reimplements: QWidget::event(QEvent *event).

[virtual protected] void QProgressBar::initStyleOption(QStyleOptionProgressBar *option) const

Initialize option with the values from this QProgressBar. This method is useful for subclasses when they need a QStyleOptionProgressBar, but don't want to fill in all the information themselves.

See also QStyleOption::initFrom().

[override virtual] QSize QProgressBar::minimumSizeHint() const

Reimplements an access function for property: QWidget::minimumSizeHint.

[override virtual protected] void QProgressBar::paintEvent(QPaintEvent *)

Reimplements: QWidget::paintEvent(QPaintEvent *event).

[slot] void QProgressBar::reset()

Reset the progress bar. The progress bar "rewinds" and shows no progress.

[slot] void QProgressBar::setRange(int minimum, int maximum)

Sets the progress bar's minimum and maximum values to minimum and maximum respectively.

If maximum is smaller than minimum, minimum becomes the only legal value.

If the current value falls outside the new range, the progress bar is reset with reset().

The QProgressBar can be set to undetermined state by using setRange(0, 0).

See also minimum and maximum.

[override virtual] QSize QProgressBar::sizeHint() const

Reimplements an access function for property: QWidget::sizeHint.

[signal] void QProgressBar::valueChanged(int value)

This signal is emitted when the value shown in the progress bar changes. value is the new value shown by the progress bar.

Note: Notifier signal for property value.