我试图在场景中添加一个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
最佳答案
您的UpgradeCromagnon
构造函数调用UpgradeCromagnon::teste
,后者又调用QGraphicsItem::scene
。那时QGraphicsItem::scene
必须返回一个空指针,因为不可能在构造函数完成之前将UpgradeCromagnon
实例添加到QGraphicsScene
中(无论如何不按照您提供的代码)。
关于qt - 添加QGraphicsProxyWidget时崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38588440/