когда я выполняю этот Qtimer, он говорит «недопустимое использование« этого »в функции, не являющейся членом»
QTimer *timerStart( )
{
QTimer* timer = new QTimer( );
Ball *b = new Ball();
QObject::connect(timer,SIGNAL(timeout()),b,SLOT(move()));
//timer->start( timeMillisecond );
timer->start(15);
return timer;
}
мой файл ball.h
class Ball: public QObject, public QGraphicsRectItem{
Q_OBJECT
public:
// constructors
Ball(QGraphicsItem* parent=NULL);
// public methods
double getCenterX();
public slots:
// public slots
void move();
private:
// private attributes
double xVelocity;
double yVelocity;
int counter = 0;
QTimer timerStart( );
// private methods
void stop();
void resetState();
void reverseVelocityIfOutOfBounds();
void handlePaddleCollision();
void handleBlockCollision();
};
#endif // BALL_H
функция move() находится в том же классе. то, что я хочу сделать, это остановить возвращаемый таймер при выполнении условия if.
когда я выдаю этот код в конструкторе Ball::Ball в Cpp, он отлично работает. мяч движется.
QTimer* timer = new QTimer();
timer->setInterval(4000);
connect(timer,SIGNAL(timeout()),this,SLOT(move()));
timer->start(15);
но когда я добавляю Qtimer *timerStart за конструктор Ball::Ball, iT не работает
QTimer * YourClass::timerStart(..)
, добавьте эту функцию в свой файл класса h. - person Simon   schedule 22.11.2017timer
виден только внутри конструктора. Если вы хотите получить к нему доступ в другом месте, объявите его как член класса. - person scopchanov   schedule 22.11.2017