У меня довольно большое приложение, которое отлично работало на Windows с Qt5.10.0 и компилятором minGW32.
А потом я добавил новое окно на основе QDialog. В этом новом классе я пытаюсь переопределить QDialog :: closeEvent . В заголовочном файле:
virtual void closeEvent(QEvent *pEvent) override;
Затем я получаю предупреждение
xxx::closeEvent hides overloaded virtual function
, поскольку параметр имеет тип QCloseEvent и ошибки связи.
Итак, я попытался:
- переопределение closeEvent (Q Close Событие * 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-файлы, когда я пытаюсь перейти по ссылке на вкладке "Issue".)
Странно то, что я больше никогда не использую closeEvent ни в одном из исходных или сгенерированных файлов. moc_files.cpp не содержит closeEvent строку.
Но
moc_files.o do содержит ссылки, например, на __ ZN7QWidget10closeEventEP6QEvent , что неверно (правильная подпись - QWidget :: closeEvent (QCloseEvent * e)), но как можно ли избежать его генерации?
Я несколько раз пытался почистить / перекомпилировать / удалить папку сборки.
Очевидно, я не надеюсь получить решение здесь, но любые советы, которые помогут мне выяснить, где искать, будут оценены.
Что может помочь? Переустановка Qt / minGW кажется бесполезной, так как она работала месяцами?
Спасибо