Перенос Borland C++ Builder в Qt
Мне нужно перенести проект из Borland C++ Builder 5.0 под Windows XP в Qt 4.7.1, используя g++ под Windows 7 / mingw. Библиотеки и утилиты командной строки сделаны, и теперь я должен заняться приложениями GUI, которые используют Borland VCL.
Может ли кто-нибудь порекомендовать какие-либо инструменты или библиотеки для облегчения этой задачи?
У кого-нибудь есть опыт такой?
редактировать, чтобы добавить: Ну, я взял быка за рога и реализовал GUI из царапать. И я должен сказать, что комментаторы были правы: я не вижу никакого способа использовать существующий графический интерфейс Borland для облегчения процесса.
3 ответов
есть несколько больших различий между VCL и Qt, которые сделают процесс автоматического преобразования довольно сложным.
- Qt использует сигналы и слоты и наследование, где VCL использует события.
- компоненты VCL используют абсолютные координаты, а Qt использует макеты. Конечно, вы могли бы использовать абсолютные координаты также с Qt, но GUIs был бы довольно ужасен тогда.
- классы TLISTBOX и TTreeView VCL сильно отличаются от представления и модели Qt классы (хотя вместо них можно использовать QListWidget и QTreeWidget).
Я думаю, что гораздо быстрее создавать совершенно новые GUIs с Qt, чем создавать даже посредственный конвертер VCL-в-Qt. И код будет намного проще поддерживать. Я предлагаю вам взять одну форму VCL средней сложности и воссоздать ее с помощью Qt. После этого вы можете сделать оценку общей работы отдыха. Также у вас будет лучшее понимание о целесообразности инструмента преобразования, который вам скорее всего придется сделать самостоятельно.
кто-то написал инструмент для преобразования dfm в файлы Qt ui:
http://sourceforge.net/projects/dfm2qt4ui/
У него есть несколько небольших ошибок, но он может сэкономить несколько часов времени на переносе дизайна формы. В некоторых случаях предпочтительнее перепроектировать определенные формы , но во многих случаях наличие меток и примерно эквивалентных элементов управления, расположенных для вас, экономит много действий "точка-и-щелчок".
Я согласен с нынешним консенсусом, что автоматическое преобразование из VCL в QT не является хорошей идеей, потому что концепция, лежащая в основе обоих, очень отличается, и вам гораздо лучше изучать "путь QT" и использовать его с самого начала.
Однако есть один важный шаг, о котором никто еще не упоминал: рефакторинг! Перед началом, убедитесь, что вы рефакторинг исходных форм, чтобы удалить как можно больше бизнеса логику и оставить только то, что действительно графический код. Это зависит от того, насколько хорошо ваш архитектура, конечно, уже есть, но дизайнер VCL имеет тенденцию поощрять как можно больше вкладывать в формы (даже если у вас есть невидимые "формы данных" с невизуальными компонентами!), поэтому вы часто находите много вещей в форме,которой не должно быть.