在graphicsview \ qgraphicsview.cpp中没有这样的信号Scene :: sceneRectChanged(QRectF):1723

时间:2015-07-17 10:28:32

标签: qt qt4 qt5 signals-slots

当我在运行应用程序时收到此消息时,我试图在我的一个班级中使用使用信号和插槽:

QObject::connect: No such signal Scene::sceneRectChanged(QRectF) in graphicsview\qgraphicsview.cpp:1723

我的班级Scene来自QGraphicsSceneQObject

为什么控件会检查库文件中的这种信号?

我实际上没有在我正在建立的任何连接中使用此信号。我的派生类中只有一个名为SIGNAL的自定义void sceneChanged();

1 个答案:

答案 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),因此您收到此错误。