构造函数中的 QGraphicsScene * 场景错误

Error with QGraphicsScene *scene in constructor

嗨,我仍然遇到 QGraphicsScene 的问题

我创建了一个名为 Gioco 的小部件,并在构造函数中声明了 *scene

Gioco::Gioco()
{
    QGraphicsScene *scene = new QGraphicsScene();
    scene -> setSceneRect(0,0,1980,1200);
    setScene(scene);
}

现在我想在空白中使用相同的 *scene 但我收到错误 undefined reference to *scene

void Gioco::partita()
{extern QGraphicsScene *scene;

    //create a new Pixmap Item
    QGraphicsPixmapItem *img_mazzo = new QGraphicsPixmapItem();
    img_mazzo -> setPixmap(QPixmap(":/Media/Immagini/dorso.jpg"));

    //add to scene
    scene -> addItem(img_mazzo);
}

我该如何解决这个错误? 谢谢

您收到错误是因为 extern QGraphicsScene * scene 声明了一个未在任何地方定义的全局变量。

你可能希望场景是一个成员变量,不需要使用显式动态分配:

class Gioco {
  QGraphicsScene m_scene;
public:
  Gioco();
  void partita();
};

auto const kImmaginiDorso = QStringLiteral(":/Media/Immagini/dorso.jpg");

Gioco::Gioco() {
  m_scene.setSceneRect(0,0,1980,1200);
  setScene(&m_scene);
}

void Gioco::partita() {
    auto mazzo = new QGraphicsPixmapItem;
    mazzo->setPixmap(QPixmap(kImmaginiDorso));
    m_scene.addItem(mazzo);
}