连接到派生类中的Qt信号

时间:2011-02-12 17:13:56

标签: c++ qt box2d

我正在构建一个基于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()

0 个答案:

没有答案