| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Продолжение перевода программы из Qt4.8 в Qt5 |
| Автор: OlegIT 25.5.2013, 07:58 |
| Начало мук http://forum.vingrad.ru/forum/topic-367324/anchor-entry2565515/0.html Всё что писано руками перевёл, ошибок нет. Остаётся перевести классы форм. Но они же автоматом создаются, поэтому вручную править считаю не правильно. Как "заставить" креатор пересобрать классы из форм? Каким дефайном можно обеспечить совместимость 4 и 5 версии, пока приходится работать на обеих версиях. |
| Автор: bsa 27.5.2013, 16:50 |
| OlegIT, что именно не работает? Как выглядит класс созданный для Qt4 и как он должен выглядеть для Qt5? |
| Автор: OlegIT 28.5.2013, 09:08 | ||||
| Это классы хедеры, которых начинаются с ui_... Там, например, есть инклюды (версия 4)
В пятой версии многое из QtGui перенесли в QtWidget. Второе, в версии 4 так
Нужно перегенерить ui_... Но как? |
| Автор: bsa 28.5.2013, 12:27 |
| удали их. qmake сам сделает правила для make. |
| Автор: OlegIT 28.5.2013, 20:32 |
| Делал так, удалил все ui... файлы, Очистить -> Запустить qmake -> Пересобрать. Не хочет креатор генерить эти файлы. Была у меня ситуация, креатор «потерял» связь между формой и файлом класса, не захотел регистрировать вновь введённые элементы управления. Как я не мучился, ни чего не получилось. Пришлось создать новый класс формы, скопировать на эту форму все элементы и только тогда новые элементы стали включаться в класс. Похоже здесь та же ситуация. |
| Автор: bsa 29.5.2013, 14:57 |
| проверь, что файлы формы (ui) прописаны в pro. |
| Автор: OlegIT 29.5.2013, 20:15 | ||
Да, они все включены
|
| Автор: bsa 30.5.2013, 11:06 |
| OlegIT, т.е. там так написано *.ui? Перечисли их явно. |
| Автор: borisbn 30.5.2013, 11:47 |
| Автор: OlegIT 6.6.2013, 22:49 |
Именно так и написано, перечислены все формы, имена файлов. Проект стоил не я, а QtCreator, поэтому так можно, если они сами не ошиблись, что вполне возможно, вспоминая как Creator добавляет внешние библиотеки. Ещё раз уточню. Написано не *.ui, а <имя файла, формы>.ui |
| Автор: bsa 7.6.2013, 10:03 |
| OlegIT, если <имя>.ui, то все должно работать. удали все ui_<имя>.h, перезапусти qmake, а затем make. Кстати, ты используешь теневую сборку (сборка в отдельном от исходниках месте) или нет? |
| Автор: bsa 11.6.2013, 21:31 |
| Вообще-то это очень правильно. |
| Автор: OlegIT 11.6.2013, 21:41 |
Не согласен. Лучше что бы все версии сборки были в поддеректориях главной директории проекта, а не "размазывать" проекты по диску. |
| Автор: bsa 12.6.2013, 13:05 |
| OlegIT, у qmake проблемы с размещением в одной поддиректории. а если разместить во втором уровне вложенности, то проблем нет: build/ - проблемы, build/debug - проблем нет. |
| Автор: OlegIT 12.6.2013, 20:36 | ||
Спорить не буду. А что мне с пятой версией делать? Что-то я не понимаю, ui....h генерятся срадствами криэйтора. Так? Тогда получается последняя версия криэйтора шалит? |
| Автор: bsa 12.6.2013, 22:01 |
| OlegIT, ui_*.h генерятся с помощью uic. uic вызывается из Makefile, Makefile создается qmake. А Qt Creator только запускается make. |
| Автор: OlegIT 18.6.2013, 08:07 |
| Проблему удалось победить только полным сносом проекта и генерации его заново. |