2011-01-07 3 views
11

Мне нужно перенести проект из Borland C++ Builder 5.0 под Windows XP в Qt 4.7.1, используя g ++ под Windows 7/mingw. Библиотеки и утилиты командной строки выполнены, и теперь мне приходится решать приложения GUI, которые используют Borland VCL.
Можно ли рекомендовать какие-либо инструменты или библиотеки, чтобы облегчить эту задачу?
У кого-нибудь есть опыт?Портирование Borland C++ Builder в Qt

Отредактировано для добавления: Ну, я взял быка за рога и реализовал графический интерфейс с нуля. И я должен сказать, что комментаторы были правы: я не вижу возможности использовать существующий графический интерфейс Borland для облегчения процесса.

+0

Сколько форм имеют ваши графические интерфейсы C++ Builder? Только несколько, десятки, сотни? Как вы, наверное, знаете, вы получаете наилучшие результаты, если вы создаете Qt GUI с нуля. –

+0

Несколько десятков форм. Некоторые из них довольно сложны, с древовидными видами, вкладками и т. Д. Поэтому я не хочу создавать их с нуля, если я могу избежать этого. – TonyK

+0

Мне было интересно, когда кто-то задает этот вопрос :) Автоматическое преобразование из VCL в Qt, похоже, не является выполнимой задачей. –

ответ

8

Существует несколько больших отличий между VCL и Qt, которые сделают процесс автоматического преобразования довольно сложным.

  • Qt использует сигналы и слоты и наследование, где VCL использует события.
  • Компоненты VCL используют абсолютные координаты, а Qt использует макеты. Конечно, вы могли бы использовать абсолютные координаты также с Qt, но тогда графические интерфейсы были бы ужасны.
  • Классы TListBox и TTreeView от VCL сильно отличаются от классов View и Model Qt (хотя вместо этого вы можете использовать QListWidget и QTreeWidget).

Я думаю, что гораздо быстрее разработать совершенно новые графические интерфейсы с Qt, чем создать даже посредственный конвертер VCL-to-Qt. И код будет намного проще в обслуживании. Я предлагаю вам взять одну среднюю сложность VCL и воссоздать ее с помощью Qt. После этого вы можете оценить общую работу отдыха. Также у вас будет лучшее понимание возможности конвертирования, который вам, скорее всего, понадобится сделать самостоятельно.

1

Кто-то написало инструмент для преобразования ДФМА в Qt UI файлы:

http://sourceforge.net/projects/dfm2qt4ui/

Его есть несколько небольших ошибок, но это может сэкономить несколько часов времени портирования конструкций формы. В некоторых случаях предпочтительнее перепроектировать конкретные формы, но во многих случаях, когда метки и примерно эквивалентные элементы управления, расположенные для вас, сохраняют много действий «точка-и-щелчок».

+0

Пробовал инструмент. Результат меня совсем не удовлетворил.Я вижу, что лучший способ переноса проекта - это реализовать графический интерфейс с нуля, как сказал автор. – vrogach

+0

Полностью зависит от количества элементов управления в форме и т. Д. Это сэкономило мне много работы, но все же .ui-файлы требуют много повторной организации. Но по крайней мере элементы управления имеют одинаковые имена переменных и уже добавлены в формы. Полный переписывать всегда будет много новых ошибок. – Pete

1

Я согласен с нынешним консенсусом в отношении того, что автоматическое преобразование из VCL в QT не является хорошей идеей, потому что концепция, стоящая за обоими, очень отличается, и вам гораздо лучше учиться «путь QT» и использовать это с самого начала.
Однако есть один важный шаг, о котором никто еще не упомянул: рефакторинг! Перед запуском убедитесь, что вы реорганизовали оригинальные формы, чтобы удалить как можно больше бизнес-логики, и оставить только то, что действительно является графическим интерфейсом. Это зависит от того, насколько хороша ваша архитектура, конечно, но разработчик VCL стремится поощрять как можно больше в формах (даже если у вас есть невидимые «формы данных» с невизуальными компонентами!), Поэтому вы часто находите много материала в форме, которой не должно быть.

Смежные вопросы