Я строю физическую изолированную программную среду на основе Box2D и использую Qt для пользовательского интерфейса. У меня есть производный класс 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 &)
Однако, когда я пытаюсь переопределить setRectChanged в Box2DView, как показано ниже:
void Box2DView::sceneRectChanged () {
QGraphicsScene::sceneRectChanged ( this->rect() );
}
Я получаю ошибку во время компиляции
не может вызвать функцию-член void QGraphicsScene :: sceneRectChanged (const QRectF &) 'без объекта
Я знаю, что мой метод переопределения неверен, но не могу понять, что делать. Есть ли другой синтаксис для ссылки на сигнал Qt базового класса?
РЕДАКТИРОВАТЬ: Решение появилось в комментариях к вопросу. Я путал сцену и вид. Мой класс Box2DView действительно является производным от QGraphicsView, поэтому решением было изменить соединение на ссылку view->scene()
для сигнала.