我正在开发一个应用程序(用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退出状态
谢谢你的帮助
发布于 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_sliderPressed和on_verticalScrollBar_sliderPressed)的插槽,但是对象objectName不存在,或者它存在,但是没有名为signalName的信号,则可能会发生这种情况。
这是由QMetaObject::connectSlotsByName()引起的,它在对ui->setupUi()的调用中被调用。此函数将尝试连接与on_<objectName>_<signalName>语法匹配的每个插槽,并在其失败时向stderr (或调试输出)写入警告。
此外,我强烈建议您不要使用QMetaObject::connectSlotsByName()和on_<objectName>_<signalName>语法。如果使用.ui文件,就不能阻止对QMetaObject::connectSlotsByName()的调用,因为它是在生成的代码中进行的,但是如果不使用语法,则不会产生任何效果。相反,您应该在代码中显式地连接信号和插槽。
请参见:
https://stackoverflow.com/questions/43075510
复制相似问题