Слоты и сигналы Qt4: Qt4 не может найти сигнал - PullRequest
0 голосов
/ 21 июля 2010

Я пытаюсь обновить строку состояния с помощью FPS содержимого QGLWidget. Я подключил их следующим образом (в классе MainWin):

glWidget = new GLWidget;
ui.verticalLayout->addWidget(glWidget);

connect(glWidget,       SIGNAL( updateFPSSignal(float)  ),
        this,           SLOT(   updateFPSSlot(float)    ));
}

Слот выглядит следующим образом:

void MainWin::updateFPSSlot(float fps){
this->statusBar()->showMessage(QString::number(fps), 0);
}

В определении класса MainWin у меня есть:

public slots:
    void updateFPSSlot(float fps);

И сигнал следующий: (насколько я понимаю, этого не должно быть здесь, но программа отказывается компилироваться без него).

void GLWidget::updateFPSSignal(float fps){}

У меня есть следующее в определении класса GLWidget:

signals:
    void updateFPSSignal(float fps);

После расчета fps я звоню:

emit updateFPSSignal(fps);

Однако при запуске приложения распечатывается следующее:

Object::connect: No such signal QGLWidget::updateFPSSignal(float) in /Users/usm/Desktop/OGLTest/MainWin.cpp:12
Object::connect:  (receiver name: 'MainWinClass')

Ни один из прочитанных мною уроков, похоже, не поможет, и я уверен, что это исправление просто для кого-то более опытного.

Спасибо.

1 Ответ

4 голосов
/ 21 июля 2010

у вас есть

class GLWidget : public QGLWidget {

   Q_OBJECT

   /* ... rest of declaration ... */

};

в вашем объявлении класса?а вы поместили свой заголовок glwidget.h в раздел HEADERS вашего .pro-файла?реализация сигнала выполняется moc, а не вами.

...