从另一个类开始qtimer面临分段错误

时间:2016-07-17 11:06:37

标签: c++ qt segmentation-fault qtimer

我在使用QTimer时遇到问题。程序在运行时关闭时出现分段错误,当我从代码中排除“定时器”时,它会正常运行。这是代码:

Class A : public QObject, public QGraphicsPixmapItem{
    Q_OBJECT
public:
    A(QPixmap pic){
        this->setPixmap(pic);
    }
    void start(){
        timer = new QTimer();
        timer->start(1000);
        connect(timer, SIGNAL(timeout()), this, SLOT(moveObject()));
    }
public slots:
    void moveObject(){
        moveTimer = new QTimer();
        moveTimer->start(20);
        connect(moveTimer, SIGNAL(timeout()), this, SLOT(changePosition()));
    }
    void changePosition(){
        //a couple of things are done here
    }
private:
    QTimer *timer;
    QTimer *moveTimer;
}

Class B : QGraphicsView{
    Q_OBJECT
public:
    B(QWidget *parent = 0) : QGraphicsView(parent){
        a = new A(QPixmap("a.png"));
    void go(){
        a->start();
    }
private:
    A *a;
}

P.S。只要对象停止移动并重新调用moveObject以便它可以移向下一个目标,我会在changePosition中删除moveTimer。

0 个答案:

没有答案