gpt4 book ai didi

c++ - 尝试访问 QGraphicsTextItem 的成员时出现段错误

转载 作者:行者123 更新时间:2023-11-28 08:00:07 25 4
gpt4 key购买 nike

我对 C++ 有点陌生,但在确定为什么我在以下代码中遇到段错误时遇到了一些麻烦;

游戏场景.h

#ifndef GAMESCENE_H
#define GAMESCENE_H

#include <QGraphicsScene>

class GameScene : public QGraphicsScene
{
Q_OBJECT
public:
explicit GameScene(QObject *parent = 0);
virtual void keyPressEvent(QKeyEvent* );
QGraphicsTextItem* p;
~GameScene();
signals:

public slots:

};

#endif // GAMESCENE_H

游戏场景.cpp

#include "gamescene.h"
#include "QKeyEvent"
#include "QGraphicsTextItem"
#include "QGraphicsRectItem"
#include "QDebug"
#include "QGraphicsScene"
#include "QScopedPointer"


GameScene::GameScene(QObject *parent) :
QGraphicsScene(parent)
{
QGraphicsTextItem* p = new QGraphicsTextItem(QString("HEEEEE"));
p->setFlags(p->ItemIsMovable);
p->moveBy(qreal(500),qreal(500));
addItem(p);
}

void GameScene::keyPressEvent(QKeyEvent *event)

{
qDebug() << (p != NULL);
switch(event->key())
case ( Qt::Key_W ):
{
qreal x, y;
x = qreal(5);
y = qreal(5);
p->moveBy(x,y);
qDebug() << "move up";

}

}
GameScene::~GameScene() {


}

它发生在我的游戏场景对象的 keyPressEvent 方法被调用时,它试图访问任何与 QGraphicsTextItem 指针有关的东西,p。

我敢肯定这很明显,但我们将不胜感激任何帮助。

最佳答案

好的,我对您使用的库一无所知,但我怀疑错误出在这里

GameScene::GameScene(QObject *parent) :
QGraphicsScene(parent)
{
QGraphicsTextItem* p = new QGraphicsTextItem(QString("HEEEEE"));
p->setFlags(p->ItemIsMovable);
p->moveBy(qreal(500),qreal(500));
addItem(p);
}

应该是

GameScene::GameScene(QObject *parent) :
QGraphicsScene(parent)
{
p = new QGraphicsTextItem(QString("HEEEEE"));
p->setFlags(p->ItemIsMovable);
p->moveBy(qreal(500),qreal(500));
addItem(p);
}

您的 keyPressEvent 方法尝试使用名为 p 的成员变量,看起来您正试图在构造函数中设置它,但您没有。构造函数中只有局部变量,也称为 p。

关于c++ - 尝试访问 QGraphicsTextItem 的成员时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com