我有一个很大的应用程序,它在使用Qt5.10.0和minGW32编译器的Windows上运行良好。 然后我添加了一个基于QDialog的新窗口。在该新类中,我尝试重新实现 QDialog :: closeEvent 。在头文件中:
virtual void closeEvent(QEvent *pEvent) override;
然后,我得到警告
xxx::closeEvent hides overloaded virtual function
,因为参数是 QCloseEvent 类型,并且存在链接错误。
所以,我试图:
无论我如何尝试,以下链接错误仍然存在,并避免我再进行编译:
undefined reference to `QWidget::closeEvent(QEvent*)'
在许多moc_“ guifile” .o上。不过会生成所有 moc_files.o 。最终错误是:
collect2.exe: error: ld returned 1 exit status
(此外,Qt创建者声称,当我尝试跟踪“问题”标签中的链接时,找不到这些Moc文件。)
奇怪的是,我不再在任何源文件或生成的文件中使用 closeEvent 了。 moc_files.cpp 不包含任何 closeEvent 字符串。
但是 例如, moc_files.o do 包含对 __ ZN7QWidget10closeEventEP6QEvent 的引用(错误签名是QWidget :: closeEvent(QCloseEvent * e)) ,但是如何避免生成?
我尝试过几次清理/重新编译/删除构建文件夹。
很显然,我不希望在这里得到解决方案,但是任何帮助我弄清楚搜索位置的提示都将不胜感激。
有什么帮助?重新安装Qt / minGW似乎没有用,因为已经运行了几个月了?
谢谢
答案 0 :(得分:0)
此问题来自Qt包含文件的修改