Подтвердить что ты не робот

Дизайнер Qt не обновляет gui

Кто-то написал GUI в дизайне Qt раньше, и теперь мне нужно изменить некоторые мелкие части (т.е. добавить кнопку/функциональность).

Предпосылка: Я добавляю новую функцию/вношу любые изменения в файл .ui в Designer. Я могу перейти в режим редактирования и увидеть, что это вносит изменения в xml-формат файла .ui

Проблема: Когда я строю и запускаю Qt, старая версия .ui - это то, что показано (без обновления моей функции). Я попробовал очистить все и запустить qmake, но безрезультатно.

Любые идеи, почему это может происходить?

4b9b3361

Ответ 1

У меня была такая же проблема, и она была решена, когда я отключил "Shadow Build" в режиме "Projects".

UPD: получение ответа за этот ответ меня расстраивает по двум причинам

  • это тривиально
  • проблема все еще там после почти 5 лет

Ответ 2

Я мог бы решить эту проблему без изменения конфигурации Shadow Build. В моем проекте я хочу построить с выходными файлами в build-ProjectName-Debug

Но QtCreator не является умным, чтобы проверить, не являются ли файлы moc_FileName.cpp и ui_FileName.h в каталог сборки. Эта проблема возникает из-за того, что если эти файлы moc_FileName.cpp и ui_FileName.h находятся в каталоге проекта, QtCreator использует их и не распознает изменения на .ui.

Решение этой проблемы было легко для меня: Удалите все moc_FileName.cpp и ui_FileName.h из каталога проекта и Перестроить. Эти файлы будут созданы в build-ProjectName-Debug, и все изменения будут там.

Ответ 3

Когда вы меняете файл .ui, кому-то нужно запустить uic.exe в файле для создания файла заголовка. Например, для окна с именем MyWindow.ui это создаст файл с именем ui_MyWindow.h.

Это то, что используется, когда приложение перестраивается.

Вы не указываете, как вы строите или на какой ОС, так что вам сложно помочь с этой целью. Если вы используете Visual Studios, вы можете интегрировать ваши файлы .ui в свои проекты, чтобы при изменении любого файла .ui все сгенерированные файлы будут воссозданы автоматически. То же самое можно сделать, если вы используете файлы .pri.

В любом случае я буду запускать:

uic.exe -o ui_yourfile.h yourfile.ui

Пожалуйста, измените имена файлов на те, которые вы используете. uic.exe можно найти в вашем каталоге Qt bin.

Затем, как только у вас есть сгенерированный заголовочный файл, попробуйте найти, где он находится в каталоге сборки. Затем перестройте.

Ответ 4

Я решаю эту проблему на clean, затем build. Я считаю, что если я проверил Shadow Build, qtCreator будет использовать старый .obj, кроме генерации нового .obj, даже если ui_xxx.h был изменен, для генерации .exe при отладке agin. Моя среда - qt5.5 + msvc2013.

Ответ 5

Это то, что помогло мне лично, добавить в файл qmake: UI_DIR = $$PWD

Ответ 6

У меня была такая же проблема, и я смог ее решить, удалив все файлы Makefile в каталоге сборки, а затем перестроив с нуля. По некоторым причинам эти файлы не удаляются при запуске Clean Project из Qt Creator.

Ответ 7

Такая же проблема для меня. Ничего не работает, пока я не изменил установку с Qt 5.0.2 (MSVC 2010) на Qt 5.0.2 (mingw). Теперь он снова работает... проводной

Ответ 8

У меня возникла одна и та же проблема: после сборки никаких изменений ui не появилось. Проблема, упомянутая выше, заключается в том, что файлы ui не переделываются.

Устранение теневой сборки решило проблему для меня, но только один раз. После этого я не мог видеть последующие изменения ui снова. Поэтому я перепрофилировал теневую сборку и удалил существующую папку создания теневых файлов. Это работает последовательно, пока я удаляю все файлы сборки. Но это хромало. Он должен иметь возможность обнаруживать изменения ui и переделывать файлы.

Я думаю, что это должно быть зарегистрировано как ошибка в Qt Creator/Designer.

Ответ 9

Я удалил весь файл автогенератора в исходной папке. когда я снял отметку с теневой сборки, в исходной папке был создан файл автогенератора. после того, как я проверил теневую сборку, компилятор использует только исходный файл gen. Поэтому я удалил весь файл автогенератора (ui_, moc_), а затем ui обновлялся всегда.

Ответ 10

В моем случае проблема была вызвана переименованием файла .ui. Qt Creator не обновил #include для файла заголовка "ui_ [name_of_ui_file].h" в файле .cpp, соответствующем форме. В любом случае, очистка всех файлов "ui _ *. H" в папке теневых сборок решила проблему (я думаю, снятие флажка "теневая сборка" на вкладке "Проект" даст тот же эффект).

Ответ 11

Вы играли с системной датой или временем, или они отличались от тех, что у вашего собеседника? Я изменил время на несколько часов спустя для целей тестирования (и тем временем компилировал проект), и после восстановления его в текущее время скомпилированные файлы не были обновлены, поскольку они были новее, чем время компиляции. Запуск Clean не удалил эти файлы. Снятие отметки с опции Shadow build только дало мне сбои и 0xc0000135 ошибку 0xc0000135. Удаление вручную файлов moc _ *. O и *.cpp с будущей датой/временем из каталога сборки и повторная компиляция всего проекта было для меня решением.

Ответ 12

Как уже упоминалось выше, файлы ui не воссоздаются. Для меня самое простое решение - просто нажать "Реконструкция" вместо "Сборка". Не нужно каждый раз входить в подменю проекта. Пока ваш проект не слишком велик, все в порядке (кроме того, это анонимная ошибка, которая имеет долгие годы qt)

Ответ 13

У меня возникла та же проблема, а затем я понял, что изменил файл .pro вручную: то есть я сделал "незаконную" вещь - переместил mainwindow.ui в DISTFILES (по умолчанию все файлы пользовательского интерфейса сгруппированы в FORMS).

Вернулся обратно в ФОРМЫ и теперь все отлично работает

Ответ 14

Добавьте следующую строку в .pro файл

   UI_DIR = $$PWD