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

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

当我 运行 应用程序收到此消息时,我正试图在我的 class 之一中使用信号和槽 :

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

我的 class Scene 来自 QGraphicsSceneQObject

为什么控件要检查库文件中的此类信号?

我实际上并没有在我正在建立的任何连接中使用这个信号。我在派生的 class.

中只有一个名为 void sceneChanged(); 的自定义 SIGNAL

如你所说:

My class Scene derives from QGraphicsScene and QObject

这是问题的根源,因为QGraphicsScene已经是QObject的子类,所以你不需要手动继承QObject。去掉这个不合适的继承就好了

关于graphicsview\qgraphicsview.cpp:1723。目前这段代码你可以看到here.

if ((d->scene = scene)) {
      connect(d->scene, SIGNAL(sceneRectChanged(QRectF)),
              this, SLOT(updateSceneRect(QRectF)));

您当然不使用此信号,但是当您将自定义场景设置到视图时,视图会建立所有需要的连接才能为场景提供服务。由于你的错误(多重继承),没有创建信号(sceneRectChanged),所以你得到这个错误。