Портирование Borland C ++ Builder на Qt - PullRequest
11 голосов
/ 07 января 2011

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

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

Ответы [ 3 ]

8 голосов
/ 07 января 2011

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

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

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

1 голос
/ 16 декабря 2014

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

1 голос
/ 05 февраля 2014

Кто-то написал инструмент для преобразования файлов dfm в файлы qt ui:

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

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

...