添加QGraphicsProxyWidget时崩溃

时间:2016-07-26 11:18:20

标签: qt crash scene

我正在尝试在我的场景中设置QPushButton,但是当我尝试将QGraphicsProxyWidget添加到场景时,它会崩溃。

所以这是.cpp

#include "upgradecromagnon.h"
#include "game.h"
#include <QGraphicsProxyWidget>
#include <qDebug>

extern Game *game;
UpgradeCromagnon::UpgradeCromagnon()
{

    this->setRect(-50,0,150,50);
    buttonAmelio = new QPushButton("salut");
    teste();
}

void UpgradeCromagnon::teste()
{
    QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget();
    proxy->setWidget(buttonAmelio);
    scene()->addItem(proxy);
}

及其.h

#ifndef UPGRADECROMAGNON_H
#define UPGRADECROMAGNON_H
#include <QPainter>
#include <QGraphicsRectItem>
#include <QPushButton>
class UpgradeCromagnon: public QGraphicsRectItem
{
public:
    UpgradeCromagnon();
    void teste();
private:
    QPushButton *buttonAmelio;
};

#endif // UPGRADECROMAGNON_H

1 个答案:

答案 0 :(得分:0)

您的UpgradeCromagnon构造函数调用UpgradeCromagnon::teste,然后调用QGraphicsItem::scene。此时QGraphicsItem::scene 必须返回空指针,因为UpgradeCromagnon实例无法在其构造函数之前添加到QGraphicsScene已经完成(不是根据您提供的任何代码)。