我正在尝试使用进度条qt创建器作为电池图像,因此我需要能够控制进度条(使用一个名为my_value的变量,我将在之后更改)。 更确切地说,我希望能够从程序中设置进度条的值,并让它实际更改并显示在屏幕上。 到目前为止,我很遗憾: - 我在.ui文件中创建了一个名为battery的进度条。 - 我没有更改头文件(自动生成)中的任何内容,但是这段代码:
#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;
}
但它仍然无效。 有人能帮我吗 ?
非常感谢你。
答案 0 :(得分:1)
您无需在主号码中创建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()
,如果它在范围内。
希望它有所帮助!