Как очистить кеш в Qt QMake: нет такого слота, повторяющиеся ошибки

Вопрос:Итак, в основном, я пишу приложение Qt. Он работал нормально, но с тех пор, как я переконфигурировал некоторые из имен файлов (в частности, давным-давно, у меня были файлы с именем mainwindow.h и .cpp. Я переименовал их net.h и .cpp соответственно и недавно изменил назад к mainwindow.h и .cpp), он терпит неудачу с несколькими ошибками (во

Вопрос:

Итак, в основном, я пишу приложение Qt. Он работал нормально, но с тех пор, как я переконфигурировал некоторые из имен файлов (в частности, давным-давно, у меня были файлы с именем mainwindow.h и .cpp. Я переименовал их net.h и .cpp соответственно и недавно изменил назад к mainwindow.h и .cpp), он терпит неудачу с несколькими ошибками (во время выполнения):

Object::connect: No such slot QWidget::slotName() Object::disconnect: No such signal QWidget::iconSizeChanged(QSize) Object::disconnect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle) Object::connect: No such signal QWidget::iconSizeChanged(QSize) Object::connect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle)

Единственный слот, который я зарегистрировал в своем классе, является первым, slotName. Я не уверен, почему он отображается как член QWidget вместо моего класса (который подклассы QWidget). Я знаю, что это правильно, потому что я нашел его внутри файла moc_mainwindow.cpp. И да, у меня Q_OBJECT в определении моего класса.

Другая ошибка также возникает один раз в секунду во время работы:

QWidget::metric: Invalid metric command QPainter::begin: Paint device returned engine == 0, type: 143256176

Как я уже сказал, все это работало отлично, поэтому я не собираюсь публиковать огромные стены кода, если не спросить. Я думаю, что это больше проблема с кешем с QMake. Я попытался удалить все файлы moc, удалив файл проекта, опустошив файл проекта и создав новый пустой Makefile и т.д. У кого-нибудь есть идеи?

Лучший ответ:

Вы не должны разрабатывать код без контроля версий, периода. Используйте систему контроля версий, чтобы очистить рабочую копию, или перейдите в новое место и перекомпилируйте ее. Тогда вы не будете обвинять, кто знает что.

В отсутствие контроля версий скопируйте свой проект вручную, файл за файлом, в новое место, передайте его в новый репозиторий управления версией по вашему выбору (локальный!) и скомпилируйте его.

Обратите внимание, что Qt Creator по умолчанию выполняет теневые сборки – то есть сборки, которые не входят в ваши исходные папки. Протирание теневой сборки тривиально: перейдите в один каталог вверху исходной папки и найдите папку с длинным именем, начиная с имени вашего проекта. Вытрите это, и вам гарантировано, что нет “кешей” любого типа.

Также обратите внимание, что у QMake нет кешей. Он перечитывает все файлы, указанные на его вкладке (.pro и его включает), и воссоздает все Make файлы с нуля. Вы можете запустить qmake && make clean для очистки, но это не позаботится о файлах из другого проекта. Увы, такие файлы не должны мешать.

Оцените статью
Добавить комментарий