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

Портирование Borland С++ Builder в Qt

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

У кого-нибудь есть опыт?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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