Die Funktion connect funktioniert nur mit den vom Objekt vordefinierten signalen, eine Parameter Übergabe funktioniert da nicht.
Die Angegebenen Parameter, falls vorhanden, werden automatisch vom Aufrufenden Objekt übergeben.
Du musst in dem Fall mit Membervariablen arbeiten.
An dieser Stelle ist es vielleicht Sinnvoll kein Timerobject zu erstellen und einfach nur singleShot verwenden.
Beispiel:
Header:
Code: Alles auswählen
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = 0);
~MainWidget();
protected:
void paintEvent(QPaintEvent *event);
public slots:
void updateTime();
private:
float ct;
};
#endif // MAINWIDGET_H
MainWidget:
Code: Alles auswählen
#include "mainwidget.h"
#include <QPainter>
#include <QTimer>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
setWindowTitle("paintEvent - Demo");
resize(400, 400);
ct = 0.0;
QTimer::singleShot(20, this, SLOT(updateTime()));
}
MainWidget::~MainWidget()
{
}
void MainWidget::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
double zz[41],x0, x2,y0,y2;
painter.setPen( QPen(Qt::blue, 2) );
for(int j=0;j<40;j++)
{
zz[j]=200.0*(1+sin(3.1416*j/20.0+ct));
}
for(int j=1;j<39;j++)
{
x0=j*4.0+120;
x2=(j+1)*4.0+120;
y0=zz[j-1];
y2=zz[j];
painter.drawLine(x0,y0,x2,y2);
}
QPoint point=QPoint(150,100);
painter.drawText(point,"Standbild");
painter.setPen(QPen(Qt::black,1));
for(int j=1;j<40;j++)
{
zz[j]=200.0*(1+sin(3.1416*j/20.0+ct));
}
for(int j=1;j<39;j++)
{
x0=j*4.0+20;
x2=(j+1)*4.0+20;
y0=zz[j-1];
y2=zz[j];
painter.drawLine(x0,y0,x2,y2);
}
painter.end();
QTimer::singleShot(20, this, SLOT(updateTime()));
}
void MainWidget::updateTime()
{
ct+=.01;
update();
}