如何使用 QProgressBar

Posted

技术标签:

【中文标题】如何使用 QProgressBar【英文标题】:How to use a QProgressBar 【发布时间】:2015-01-18 21:32:40 【问题描述】:

我正在尝试使用进度条 qt 创建器作为电池图像,因此我需要能够控制进度条(使用名为 my_value 的变量,之后我将更改它)。 更准确地说,我希望能够从程序中设置进度条的值,并让它实际改变并出现在屏幕上。 到目前为止,我很迷茫: -我在 .ui 文件中创建了一个名为电池的进度条。 - 我没有更改头文件中的任何内容(自动生成),但是这段代码:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui 
class MainWindow;


class MainWindow : public QMainWindow

    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
;

#endif // MAINWINDOW_H

-这是我的 main.cpp 文件:

include "mainwindow.h"
#include <QApplication>
#include <QProgressBar>
int main(int argc, char *argv[])

    QApplication a(argc, argv);
    QProgressBar battery;
    int my_value=10;
    battery.setValue(my_value);
    battery.valueChanged(my_value);
    MainWindow w;
    w.show();
    return a.exec();

我尝试了 setValue() 和 valueChanged(),但它们都不起作用 所以我尝试使用 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProgressBar>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->battery->setValue(10);
    ui->setupUi(this);


MainWindow::~MainWindow()

    delete ui;

但它仍然不起作用。 有人能帮我吗 ?

非常感谢。

【问题讨论】:

【参考方案1】:

你不需要在 main 中创建 QProgressBar,它会在你调用 new Ui::MainWindow() 时自动创建。

void valueChanged() 是一个信号,因此您不应该调用它,而是将插槽连接到它。如果您不熟悉 Qt 的信号/插槽系统,建议您阅读此页面:http://doc.qt.io/qt-5/signalsandslots.html

您应该首先在 MainWindow 构造函数中正确设置进度条:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
        
    ui->battery->setOrientation(Qt::Horizontal);
    ui->battery->setRange(0, 100); // Let's say it goes from 0 to 100
    ui->battery->setValue(10); // With a current value of 10

    ui->setupUi(this);

然后您应该能够创建自己的信号并将它们连接到void QProgressBar::setValue(int) 以更改进度条值。 如果在范围内,您也可以直接从您正在处理的地方调用setValue()

希望对你有帮助!

【讨论】:

以上是关于如何使用 QProgressBar的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?