Qt4 插槽和信号:Qt4 无法找到信号
Posted
技术标签:
【中文标题】Qt4 插槽和信号:Qt4 无法找到信号【英文标题】:Qt4 slots and signals: Qt4 has trouble finding the signal 【发布时间】:2010-07-21 12:07:25 【问题描述】:我正在尝试使用 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')
我读过的教程似乎都没有任何帮助,而且我确信对于更有经验的人来说修复很简单。
谢谢。
【问题讨论】:
为了清楚起见,请写“Qt”而不是“QT”。谢谢 【参考方案1】:你有吗
class GLWidget : public QGLWidget
Q_OBJECT
/* ... rest of declaration ... */
;
在你的班级声明中?您是否将 glwidget.h 标头放入 .pro 文件的 HEADERS 部分?信号的实现由 moc 完成,而不是你。
【讨论】:
啊,是的,我把 Q_OBJECT 放在类声明中,我还需要在重新编译之前运行 qmake。谢谢! 这也应该消除信号声明后对大括号的需要,因为 moc 现在应该为您生成一个实现。以上是关于Qt4 插槽和信号:Qt4 无法找到信号的主要内容,如果未能解决你的问题,请参考以下文章
C++ 和 QT4.5 - 传递 const int& 过大?通过引用传递是不是有助于信号/插槽?
Qt Jambi (Qt4Dotnet):区分插槽中的信号发射器