Qt QWidget :: closeEvent链接问题

时间:2018-09-05 10:23:44

标签: c++ qt

我有一个很大的应用程序,它在使用Qt5.10.0和minGW32编译器的Windows上运行良好。 然后我添加了一个基于QDialog的新窗口。在该新类中,我尝试重新实现 QDialog :: closeEvent 。在头文件中:

virtual void closeEvent(QEvent *pEvent) override;

然后,我得到警告

xxx::closeEvent hides overloaded virtual function

,因为参数是 QCloseEvent 类型,并且存在链接错误。

所以,我试图:

  • 重新实现closeEvent(Q 关闭事件* pEvent)
  • 删除closeEvent方法
  • 停止使用该窗口并将其从.pro中删除

无论我如何尝试,以下链接错误仍然存​​在,并避免我再进行编译:

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似乎没有用,因为已经运行了几个月了?

谢谢

1 个答案:

答案 0 :(得分:0)

此问题来自Qt包含文件的修改