0

我正在尝试使用 QGLWidget 内容的 FPS 更新状态栏。我将它们连接如下(在 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')

我读过的所有教程似乎都没有任何帮助,而且我相信对于更有经验的人来说修复很简单。

谢谢。

4

1 回答 1

4

你有

class GLWidget : public QGLWidget {

   Q_OBJECT

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

};

在你的班级声明中?您是否将 glwidget.h 标头放入 .pro 文件的 HEADERS 部分?信号的实现是由 moc 完成的,而不是你。

于 2010-07-21T12:11:12.697 回答