Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 构造函数中QGraphicscene*场景出错_Qt_Qgraphicsscene - Fatal编程技术网

Qt 构造函数中QGraphicscene*场景出错

Qt 构造函数中QGraphicscene*场景出错,qt,qgraphicsscene,Qt,Qgraphicsscene,嗨,我仍然有一个问题与QGraphicscene 我创建了一个名为Gioco的小部件,并在构造函数中声明了*场景 Gioco::Gioco() { QGraphicsScene *scene = new QGraphicsScene(); scene -> setSceneRect(0,0,1980,1200); setScene(scene); } 现在我想在一个空白中使用相同的*场景,但我得到了对*场景的错误未定义引用 void Gioco::partita(

嗨,我仍然有一个问题与QGraphicscene

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

Gioco::Gioco()
{
    QGraphicsScene *scene = new QGraphicsScene();
    scene -> setSceneRect(0,0,1980,1200);
    setScene(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);
}
如何解决此错误?
谢谢

您得到了错误,因为
外部QGraphicscene*场景
声明了一个未在任何地方定义的全局变量

您可能希望场景成为成员变量,而无需使用显式动态分配:

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);
}

出现错误是因为
外部QGraphicscene*场景
声明了一个未在任何地方定义的全局变量

您可能希望场景成为成员变量,而无需使用显式动态分配:

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);
}

谢谢“汽车”这个词的功能是什么?@davidererari它代表了一个新的概念。使用时,它提高了代码的可读性,并允许您键入更少的内容。现代IDE将像编译器一样推断类型,因此
mazzo
将得到完成,等等。谢谢!!“汽车”这个词的功能是什么?@davidererari它代表了一个新的概念。使用时,它提高了代码的可读性,并允许您键入更少的内容。现代IDE将像编译器一样推断类型,因此
mazzo
将得到完成,等等。