我有:
Game::Game ( QWidget * parent ) :
QWidget ( parent ), ui ( new Ui::Game )
{
ui->setupUi ( this ) ;
ui->progressBar_Loading->setValue ( 0 ) ;
}
我无法在静态函数中调用ui->progressBar_Loading->setValue ( 25 ) ;
,所以我尝试了:
QProgressBar * progressBar_Loading;
Game::Game ( QWidget * parent ) :
QWidget ( parent ), ui ( new Ui::Game )
{
progressBar_Loading = ui->progressBar_Loading;
}
但这会导致应用在启动时崩溃。任何已知的解决方案?
答案 0 :(得分:0)
如果ui未被声明为构造函数的局部变量,你可以在构造函数外的类中的任何地方调用ui->progressBar_Loading->setValue ( 25 ) ;
,我将提供一个对我有用的示例,
widget.h类定义
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
QTimer *timer;
public:
explicit Widget(QWidget *parent = 0);
~Widget();
public slots:
void updateProgressBar();
private:
Ui::Widget *ui;
};
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->progressBar->setValue(0);
timer = new QTimer;
timer->start(500);
connect(timer,SIGNAL(timeout()),this,SLOT(updateProgressBar()));
show();
}
void Widget::updateProgressBar()
{
int k = ui->progressBar->value();
qDebug() << "Updating" << k ;
ui->progressBar->setValue(++k);
timer->start(500);
}
Widget::~Widget()
{
delete ui;
}
只需为widget创建一个Object,它就可以运行,
答案 1 :(得分:0)
静态成员函数实际上是全局函数,就在内部 class的命名空间。也就是说,它们没有'this'指针 因此无法访问该类的任何其他成员(除了 其他静态成员)。