При переносе Qt-проекта получил такую ошибку:
class Ui::SomeClass has no member named SomeMember
при обращении к полям ui.
Причем, особенно выносит мозг тот факт, что QtCreator по F2 отлично находит все эти поля.
Очистка, запуск qmake и пересборка не помогли.
Снос всей папки со сборкой тоже не помог.
Но ошибка оказалась чрезвычайно глупой:
ui файлы переводились в ui_*.h в папке сборки проекта, но каким-то образом (похоже со старых времен) в папке с исходниками проекта оказались одноименные файлы, так что когда делаем #include "ui_*.h", то подключается не файл из папки сборки, а файл из папки проекта.
Соответственно, снос этих старых файлов все решил.
В более сложных случаях следовало бы скормить исходники препроцессору и посмотреть что бы он выдал -- это помогло бы быстрее понять в чем ошибка.
class Ui::SomeClass has no member named SomeMember
при обращении к полям ui.
Причем, особенно выносит мозг тот факт, что QtCreator по F2 отлично находит все эти поля.
Очистка, запуск qmake и пересборка не помогли.
Снос всей папки со сборкой тоже не помог.
Но ошибка оказалась чрезвычайно глупой:
ui файлы переводились в ui_*.h в папке сборки проекта, но каким-то образом (похоже со старых времен) в папке с исходниками проекта оказались одноименные файлы, так что когда делаем #include "ui_*.h", то подключается не файл из папки сборки, а файл из папки проекта.
Соответственно, снос этих старых файлов все решил.
В более сложных случаях следовало бы скормить исходники препроцессору и посмотреть что бы он выдал -- это помогло бы быстрее понять в чем ошибка.
Спасибо огромное, добрый человек! Полдня мозг ломал, правда у меня они похитрее спрятались, но подход помог. Лучей добра и сотен нефти ;)
ОтветитьУдалить