qt QWidget :: closeEvent链接问题

问题描述 投票:0回答:1

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

virtual void closeEvent(QEvent *pEvent) override;

然后,我收到警告

xxx::closeEvent hides overloaded virtual function

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

所以,我试过:

  • closeEvent重新实现(QCloseEvent * 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确实包含对__ZN7QWidget10closeEventEP6QEvent的引用,例如,这是错误的(正确的签名是QWidget :: closeEvent(QCloseEvent * e)),但是如何避免生成?

我已经尝试了几次清理/重新编译/删除构建文件夹。

显然,我不希望在这里得到解决方案,但任何帮助我找出搜索位置的提示都将受到赞赏。

什么可以帮助?重新安装Qt / minGW似乎没用,因为它已经工作了几个月?

谢谢,

c++ qt
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.