Подключение к сигналу Qt в производном классе - PullRequest
2 голосов
/ 12 февраля 2011

Я строю физическую изолированную программную среду на основе 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() для сигнала.

...