首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt moc_mainwindow

Qt moc_mainwindow
EN

Stack Overflow用户
提问于 2017-03-28 16:54:52
回答 1查看 2.3K关注 0票数 0

我正在开发一个应用程序(用OpenCV),其中我创建了一个滚动条和相关的函数,但最后我删除了滚动条。发生下列错误:

moc_mainwindow.cpp:-1: erreur :对MainWindow::on_verticalScrollBar_actionTriggered(int)‘的未定义引用 moc_mainwindow.cpp:-1: erreur :对MainWindow::on_verticalScrollBar_sliderPressed()‘的未定义引用 -1: erreur:`.data‘部分中的释放/moc_mainwindow.o:错误的reloc地址0x4 收件2.exe:-1: erreur :错误: ld返回1退出状态

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 20:29:25

undefined reference to `MainWindow::...'错误是由于您的函数在mainwindow.h中声明,但没有在任何地方定义而造成的。

要解决这个问题,要么在mainwindow.cpp中定义它们,要么从mainwindow.h中删除它们的声明。如果您没有使用,显然,您应该删除他们。

现在关于"Qt显示了一个关于函数的错误“,您可能指的是QMetaObject::connectSlotsByName: No matching signal for ...

如果您有一个或多个名为on_<objectName>_<signalName> (例如,on_verticalScrollBar_sliderPressedon_verticalScrollBar_sliderPressed)的插槽,但是对象objectName不存在,或者它存在,但是没有名为signalName的信号,则可能会发生这种情况。

这是由QMetaObject::connectSlotsByName()引起的,它在对ui->setupUi()的调用中被调用。此函数将尝试连接与on_<objectName>_<signalName>语法匹配的每个插槽,并在其失败时向stderr (或调试输出)写入警告。

此外,我强烈建议您不要使用QMetaObject::connectSlotsByName()on_<objectName>_<signalName>语法。如果使用.ui文件,就不能阻止对QMetaObject::connectSlotsByName()的调用,因为它是在生成的代码中进行的,但是如果不使用语法,则不会产生任何效果。相反,您应该在代码中显式地连接信号和插槽。

请参见:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43075510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档