当我运行应用程序时,我正试图在我的一个类中使用use信号和插槽:
QObject::connect: No such signal Scene::sceneRectChanged(QRectF) in graphicsviewqgraphicsview.cpp:1723
我的类Scene
来源于QGraphicsScene
和QObject
为什么控件在库文件中检查这样的信号?
我实际上没有在我正在建立的任何连接中使用此信号。我只是有一个自定义的SIGNAL
称为void sceneChanged();
在我的派生类。
如你所说:
我的类Scene派生自QGraphicsScene和QObject
这是问题的根源,因为QGraphicsScene
已经是QObject
的子类,所以你不需要手动继承QObject
。只要删除这个不合适的继承,一切都会好起来的。
关于graphicsviewqgraphicsview.cpp:1723
。目前你可以在这里看到这段代码。
if ((d->scene = scene)) {
connect(d->scene, SIGNAL(sceneRectChanged(QRectF)),
this, SLOT(updateSceneRect(QRectF)));
你当然不使用这个信号,但是当你将你的自定义场景设置为视图时,视图会建立所有需要的连接来服务场景。由于您的错误(多重继承),没有创建信号(sceneRectChanged
),所以您得到了这个错误。