graphicsview\qgraphicsview.cpp:1723 中没有这样的信号 Scene::sceneRectChanged(QRectF) [重复]
Posted
技术标签:
【中文标题】graphicsview\\qgraphicsview.cpp:1723 中没有这样的信号 Scene::sceneRectChanged(QRectF) [重复]【英文标题】:No such signal Scene::sceneRectChanged(QRectF) in graphicsview\qgraphicsview.cpp:1723 [duplicate]graphicsview\qgraphicsview.cpp:1723 中没有这样的信号 Scene::sceneRectChanged(QRectF) [重复] 【发布时间】:2015-07-17 10:28:31 【问题描述】:当我运行应用程序后立即收到此消息时,我正尝试在我的一个班级中使用信号和插槽:
QObject::connect: No such signal Scene::sceneRectChanged(QRectF) in graphicsview\qgraphicsview.cpp:1723
我的类Scene
派生自QGraphicsScene
和QObject
为什么控件会在库文件中检查这样的信号?
我实际上没有在我正在建立的任何连接中使用此信号。我的派生类中只有一个名为 void sceneChanged();
的自定义 SIGNAL
。
【问题讨论】:
确保你的类声明有Q_OBJECT
宏并重新运行qmake。
尝试去掉QObject继承,你应该只继承QGraphicsScene。
@Chernobyl 谢谢!你能把它作为答案发布吗,我会接受的。
Qt 不支持多个QObject
继承。就是这样。
【参考方案1】:
如你所说:
我的场景类派生自 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
),所以你得到了这个错误。
【讨论】:
以上是关于graphicsview\qgraphicsview.cpp:1723 中没有这样的信号 Scene::sceneRectChanged(QRectF) [重复]的主要内容,如果未能解决你的问题,请参考以下文章