Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, 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)
Код

#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>


В пятой версии многое из QtGui перенесли в QtWidget.

Второе, в версии 4 так
Код

QApplication::translate("GraphicElementProperties"…

а в пятой версии translate уже не в QApplication, а ... нет сейчас под рукой той самой пятой версии.

Нужно перегенерить 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
Да, они все включены

Цитата

FORMS += \
    *.ui \
.............


Автор: bsa 30.5.2013, 11:06
OlegIT, т.е. там так написано *.ui?  smile 
Перечисли их явно.

Автор: borisbn 30.5.2013, 11:47
Цитата(OlegIT @  29.5.2013,  20:15 Найти цитируемый пост)
FORMS += \
    *.ui \

 smile а так можно ?

Автор: OlegIT 6.6.2013, 22:49
Цитата(bsa @  30.5.2013,  11:06 Найти цитируемый пост)
Перечисли их явно. 

Именно так и написано, перечислены все формы, имена файлов.

Цитата(borisbn @  30.5.2013,  11:47 Найти цитируемый пост)
а так можно ? 

Проект стоил не я, а QtCreator, поэтому так можно, если они сами не ошиблись, что вполне возможно, вспоминая как Creator добавляет внешние библиотеки.

Ещё раз уточню. Написано не *.ui, а <имя файла, формы>.ui

Автор: bsa 7.6.2013, 10:03
OlegIT, если <имя>.ui, то все должно работать. удали все ui_<имя>.h, перезапусти qmake, а затем make.
Кстати, ты используешь теневую сборку (сборка в отдельном от исходниках месте) или нет?

Автор: OlegIT 11.6.2013, 19:50
Сделал ещё раз так, удалил все ui_<имя>.h файлы, Очистить -> Запустить qmake -> Пересобрать. ui_<имя>.h не появились и, естественно компилятор ругается на отсутствие этих файлов. 
Это происходит только на Qt Creator 2.0.7 Qt 5.0.5 (32-х битной) Ревизия b6257ef735. На ранних версиях всё работает даже без Запустить qmake.

Цитата(bsa @  7.6.2013,  10:03 Найти цитируемый пост)
Кстати, ты используешь теневую сборку (сборка в отдельном от исходниках месте) или нет?

Галочка <Теневая сборка> стоит. Это галочка на работоспособность не влияет.
Кстати в Qt Creator 2.4.1 сборка Debug, Release внутри директории проекта позволялась, в Qt Creator 2.7.0 уже нельзя, что очень жаль.

Автор: bsa 11.6.2013, 21:31
Цитата(OlegIT @  11.6.2013,  20:50 Найти цитируемый пост)
Кстати в Qt Creator 2.4.1 сборка Debug, Release внутри директории проекта позволялась, в Qt Creator 2.7.0 уже нельзя, что очень жаль. 
Вообще-то это очень правильно.

Автор: OlegIT 11.6.2013, 21:41
Цитата(bsa @  11.6.2013,  21:31 Найти цитируемый пост)
Вообще-то это очень правильно.

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

Автор: bsa 12.6.2013, 13:05
OlegIT, у qmake проблемы с размещением в одной поддиректории. а если разместить во втором уровне вложенности, то проблем нет: build/ - проблемы, build/debug - проблем нет.  smile 

Автор: OlegIT 12.6.2013, 20:36
Цитата(bsa @  12.6.2013,  13:05 Найти цитируемый пост)
OlegIT, у qmake проблемы с размещением в одной поддиректории. а если разместить во втором уровне вложенности, то проблем нет: build/ - проблемы, build/debug - проблем нет.  

Спорить не буду.
А что мне с пятой версией делать? Что-то я не понимаю, 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
Проблему удалось победить только полным сносом проекта и генерации его заново.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)