我正在构建一个基于Box2D的物理沙箱,并使用Qt作为UI。我有一个QGraphicsScene派生类( Box2DView )来处理鼠标和键盘事件。我想连接到 sceneRectChanged 信号(void QGraphicsScene::sceneRectChanged ( const QRectF & rect ) [signal]
),但我不知道如何引用它,因为我的实例属于派生类。
我试图按如下方式连接它:
connect(view, SIGNAL(sceneRectChanged( const QRectF & )),
this, SLOT(debugViewChanged()) );
其中view
是Box2DView的一个实例。我收到以下运行时错误:
Object :: connect:没有这样的信号Box2DView :: sceneRectChanged(const QRectF&)
但是,当我尝试在Box2DView中覆盖setRectChanged时,如下所示:
void Box2DView::sceneRectChanged () {
QGraphicsScene::sceneRectChanged ( this->rect() );
}
我收到编译时错误
无法调用成员函数'void QGraphicsScene :: sceneRectChanged(const QRectF&)'无对象
我知道我的覆盖方法不对,但无法弄清楚要做什么。是否有不同的语法来引用基类的Qt信号?
编辑:解决方案出现在问题的评论中。我混淆了场景和视图。我的Box2DView类确实派生自QGraphicsView,因此解决方案是将连接更改为引用信号的引用view->scene()
。