Проблема Qt Creator.Изменения интерфейса не отображаются при сборке проекта - PullRequest
5 голосов
/ 15 июля 2010

Я делаю изменения в форме в Creator, но при сборке изменения не "обновляются". Я зашел так далеко, что удалил каждый элемент из формы и избавился от каждой таблицы стилей, но когда я строю проект, я получаю тот же результат; как будто я никогда не делал изменения вообще. Что дает? Я что-то упускаю из виду? (очевидно для всех, кроме меня .. очевидно)

Ответы [ 8 ]

9 голосов
/ 18 июля 2010

Я полагаю, вы используете QtCreator 2.0?Я нашел ту же странную проблему.У вас есть два варианта:

  • Удалить ui_{the_name_of_design}.h из каталога сборки проекта.Затем снова запустите qmake.
  • make clean или Build → Rebuild All

Но второй вариант даже мне не помогаетКстати, поэтому лучше использовать другой каталог сборки, чем тот, в котором находятся источники.Если некоторые изменения не применяются, просто удалите содержимое директории сборки, и все будет хорошо.

Cheers

1 голос
/ 02 июня 2016

Я также наткнулся на эту проблему, и я заметил одну вещь: моя программа все еще работала в фоновом режиме, и я не знал об этом. Завершение задачи через диспетчер задач исправляет ее, и вы можете вносить изменения снова.

1 голос
/ 27 декабря 2010

Для меня решением было изменить BuildDirectory на тот же каталог, где находится код, вместо ** - каталог build-desktop.

1 голос
/ 15 июля 2010

Скорее всего, причина в том, что ваша процедура make не замечает изменений в файле .ui и поэтому не вызывает инструмент uic. Попробуйте сделать make clean, чтобы увидеть, помогает ли это, и проверьте журнал сборки, чтобы узнать, вызывается ли uic.

0 голосов
/ 11 марта 2014

Проблема действительно в устаревших сгенерированных файлах в исходном каталоге проекта. Это может происходить как с генерируемыми файлами ui_*.h, так и с файлами moc_*.*. Ниже не охвачены существующие ответы, поэтому здесь мы идем:

Чтобы удалить сгенерированные файлы из исходного каталога проекта, не затрагивая настройки Qt Creator или текущие каталоги теневых сборок, есть два основных способа, которые также можно комбинировать для дополнительного покрытия.

  1. Перейдите в командную строку Qt, перейдите в исходный каталог проекта и выполните следующие команды:

    qmake -r
    make clean
    make distclean
    

    1-й из них будет рекурсивно создавать make-файлы. Второй удалит все файлы, созданные при сборке проекта. 3-й снова удалит make-файлы. Затем продолжайте использовать теневую сборку из Qt Creator, как и раньше.

    Проблема в том, что он оставит файлы, которые не являются частью проекта. Таким образом, если некоторые файлы были удалены из проекта, связанные с ними сгенерированные файлы могут остаться и вызвать проблемы, если файлы с тем же именем будут добавлены обратно. Поэтому даже после этого рекомендуется проверить, не осталось ли файлов ui_* или moc_*, если вы знаете, что удалили файлы из проекта.

  2. Используйте программное обеспечение для управления версиями, чтобы сначала зафиксировать или спрятать / отложить все незафиксированные изменения, а затем удалить все неверсированные (также проигнорированные) файлы. Для некоторых программ контроля версий это может быть непросто, как git clean -dxf (будьте осторожны, это также приведет к потере незафиксированных изменений и пользовательских настроек проекта Qt Creator), и в этом случае может быть проще просто удалить исходный каталог проекта и получить чистую проверку .

    Проблема в том, что если некоторые сгенерированные файлы были случайно добавлены в проект, они не будут очищены с этим. Таким образом, все еще может быть хорошей идеей сделать шаг 1 выше.

Вышеуказанные шаги должны быть синхронизированы, так что после шага 1 любые файлы в исходном каталоге (кроме projectname.pro.user и возможных *~ файлов резервных копий Qt Creators) должны находиться под контролем версий.

0 голосов
/ 10 марта 2014

У меня есть эта проблема, и я решаю ее, изменяя путь к проекту.Когда я столкнулся с этой проблемой, я сохранил проект в своей флэш-памяти, затем скопировал папку проекта и папку его сборки на рабочий стол и открыл его с помощью QtCreator, и проблема была решена.

0 голосов
/ 22 сентября 2013

Эта тема немного устарела, но, поскольку я столкнулся с той же проблемой, я подумал, что поделюсь, как я решил эту проблему.Я постепенно создавал пользовательский интерфейс с конструктором в QtCreator 2.4.1 / Qt 4.8.1, используя подход управления исходным кодом бедного человека: снимки.В какой-то момент я случайно создал не затененный проект сборки.В следующем снимке я вернул проект обратно в теневую сборку, и в этот момент новые виджеты, добавленные в форму пользовательского интерфейса, больше не распознавались в сборке.Решение. Удалите устаревшие файлы ui_ .h из исходного каталога.Удалите файлы make и ui_ .h из своего каталога сборки shadaow.Восстановите последние сгенерированные файлы ui_ .h, которые появятся в каталоге теневой сборки.В исходном каталоге не отображаются копии файлов ui_ .h, что указывает на то, что устаревшие файлы имеют приоритет в порядке сборки.Не очевидно.

0 голосов
/ 18 июля 2010

Несколько предложений:

  • Выполнение make distclean.
  • Использование теневого каталога сборки.Сборка «внутри» исходного кода не рекомендуется.
  • Проверьте часы вашего компьютера, а также дату и время ваших файлов.
...