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