qt QWidget :: closeEvent ссылка на проблему - PullRequest
0 голосов
/ 05 сентября 2018

У меня довольно большое приложение, которое отлично работало на 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 кажется бесполезной, так как она работала месяцами?

Спасибо

1 Ответ

0 голосов
/ 05 сентября 2018

Проблема возникла из-за модификации включаемых файлов Qt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...