尝试在Qt Creator中构建我的应用时出现以下错误:
错误(第3行):没有匹配函数来调用'QGraphicsScene :: QGraphicsScene()'
这个的来源很简单(文件名是gamscene.cpp):
#include "gamescene.h"
GameScene::GameScene() : QGraphicsScene(parent)
{
}
我已经搜索了一些相似的问题,但我并不理解给出的答案。
答案 0 :(得分:2)
我们来自QGraphicsScene类,如此
class ImprintTemplateScene : public QGraphicsScene
{
Q_OBJECT
public:
ImprintTemplateScene(QObject *parent = 0);
...
};
请注意,parent是传递给构造函数的参数。构造函数实现如下:
ImprintTemplateScene::ImprintTemplateScene(QObject *parent)
: QGraphicsScene(parent),
sceneMode(mode_normal),
editingTextBox(0)
{
}
答案 1 :(得分:0)
parent
必须来自某个地方。因为你正在定义一个GameScene
构造函数,大概它实际上是构造函数的一个参数(我不熟悉Qt所以我不知道parent
应该是什么类型 - 使用适当的类型你的实际代码):
GameScene::GameScene(TypeOfParent parent) : QGraphicsScene(parent)
{
}
或者,如果在没有父项的情况下调用QGraphicsScene
构造函数是有意义的,那么:
GameScene::GameScene() : QGraphicsScene()
{
}
可能是一种可能性。可能不是,因为错误消息表明没有QGraphicsScene
的零参数构造函数。
此外,您没有发布类定义,但考虑到构造函数定义尝试,我假设GameScene
公开继承自QtGraphicsScene
。因此,当您构建GameScene
时,您需要调用超类构造函数(正如您尝试的那样)。但是超类构造函数的任何参数都只能来自构造函数的参数。因此,如果超类构造函数需要一个参数,那么构造函数将需要该参数,以便它可以将它传递给超类构造函数(除非您将超类构造函数传递给编译时常量参数)。