Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > DFM2UI


Автор: NuShaman 9.12.2009, 12:51
Добрый день!
Не нашел в инете утилиту DFM2UI, хотя кто-то упоминал, что она существует. Есть ли какие-нибудь программы по преобразованию DFM-файлов (формы в Borland Delphi 7, C++ Builder 6) в UI-файлы (XML) для Qt?

Автор: SABROG 9.12.2009, 14:05
Никогда не слышал о такой. Если она и есть, то её функционал должно быть сильно ограничен и на выходе будет какой-нибудь гадкий утенок smile

Автор: W4FhLF 9.12.2009, 14:54
В qt интерфейс принято строить на основе layout'ов, а в билдере сплошной pixel hacking. Поэтому даже если такая утилита есть конечный результат не будет вписываться в общую концепцию дизайна UI с помощью Qt. 

Автор: SABROG 9.12.2009, 15:46
Цитата(W4FhLF @ 9.12.2009,  14:54)
В qt интерфейс принято строить на основе layout'ов, а в билдере сплошной pixel hacking. Поэтому даже если такая утилита есть конечный результат не будет вписываться в общую концепцию дизайна UI с помощью Qt.

В принципе расставить кнопочки и без компановщиков можно, другое дело, что потом переделывать придется. Еще картинки (глифы) надо будет выдернуть, сконвертить в .png, создать файл ресурсов и прописать эти картинки там. И т.к. в DFM файле прописаны обработчики типа onClick, то их надо будет либо выкинуть, либо исходник генерить со слотами на подобные сигналы. Естественно, что многих аналогов сигналов Qt не будет, также как и многих параметров, которые могли бы отвечать за внешний вид виджета, за его расположение на форме.

Автор: W4FhLF 9.12.2009, 16:37
SABROG, я  стобой согласен!  smile 

Автор: andrew_121 9.12.2009, 18:20
Так и не нужна такая тулза!

Автор: NuShaman 10.12.2009, 07:54
SABROG, спасибо за ответ!
Цитата
Так и не нужна такая тулза!

Мне нужна, чтобы хотя бы частично автоматизировать перенос проекта с Builder С++ 5 в Qt 4.6.0.
Я уже занялся проектом DFM2UI.
Планирую так конвертить свойства geometry и text:
TLabel (с надписью) -> QLabel
TLabel (без надписи) -> QPushButton

TLabel (без надписи) у меня используется для событий OnMouseDown и OnMouseUp, чтобы менять картинку в TImage такого же размера под TLabel, таким образом получается любая кнопка (картинки созданы в Photoshop).
Тогда задам в этой же ветке вопрос.
Есть ли компонент типа QPushButton с событиями clicked и released, но чтобы при его нажатии не прорисовывалась рамка как у QPushButton?

Автор: SABROG 10.12.2009, 10:39
В Qt если хотят кликать по картинке - переопределяют mousePressEvent() у QLabel'a или ставят фильтр событий на него (installEventFilter) и ловят QEvent::MouseButtonPress.

Автор: sergey_85 10.12.2009, 12:17
NuShaman, зачем тебе это Builder уже почти умер!  smile 
Ну сконвертишь ты лейб, буттон, чекбокс, а что будешь делать с virtualtreeview и тучей прочих, зараннее неизвестных контролов?

Не думаю, что данная утилита окупиться. Вряд ли в ней будет крайняя нужда, и все равно 100% конверта достичь будет трудно!

Проще, на мой взгляд, открыть exe'шник написанный на c++ builder и QtDesigner и вручную все это перенести!

Слишком много гемора!

С уважением.

Автор: NuShaman 10.12.2009, 12:49
Цитата
NuShaman, зачем тебе это Builder уже почти умер!

Я всё ещё разрабатываю приложения под Windows 98, и всё удовлетворяет.
Дело в том, что надо переходить на линукс, как бесплатную альтернативу винды, для этого я и планирую перекладывать приложение на Кутэ (куда ещё можно?), ну 

и вообще устремиться к кросс-платформенности, и может даже код на C++ и формы в некоей своей своеобразной базе данных хранить, чтобы потом очень быстро 

адаптировать в любую среду разработки. Кстати, поставил Builder 2010 - супер, всё понравилось!

К 100% конверта я совершенно не стремлюсь, у меня в приложении в основном TLabel и TImage, ну и всякие незначительные компоненты, просто хочу всю геометрию 

и надписи сконвертить, а там видно будет. Разумеется, сам код переносить будет сложнее всего. Думаю, сложности будут с TChart и COM-портом.
С Кутэ я несколько дней только знаком, вникаю.
Потом отпишусь о результатах переноса на Кутэ.
Всем спасибо за ответы!

Автор: andrew_121 10.12.2009, 13:03
Цитата(NuShaman @  10.12.2009,  12:49 Найти цитируемый пост)
С Кутэ я несколько дней только знаком, вникаю.

Мдя... Может екземплов почитать?  smile  Рано, имхо, браться за написание тулзы, которую не фак что завершите. Разве что ради опыта.


Цитата(NuShaman @  10.12.2009,  12:49 Найти цитируемый пост)
Кстати, поставил Builder 2010 - супер, всё понравилось!

Не думаю что в этом разделе кто-то понимает ваш восторг smile 


Помимо переноса ГУИ, вы столкнетесь еще и с переносом кода. Дело в том, что код компилируемый в билдере, не очень соответствует стандарту(это еще мягко сказано!). А g++ или Mingw, весьма педантичные компиляторы.


В общем....успехов.

Автор: sergey_85 10.12.2009, 13:04
наверно в 2010 builder'е  максимальная ориентированость под .net

Да я тоже двумя руками за кросс-платформенные приложения, максимум через пару лет эта тема будет очень востребована!

Автор: NuShaman 20.1.2010, 07:47
Написал конвертилку DFM в UI. Конвертит TLabel в QLabel, потом ручками приходится дописывать, но всё равно облегчает труд.
Главную форму приложения сделал, щас ставлю компилятор g++ и Qt (чо-то как-то криво ставятся, с проблемами) на Debian. хочу откомпилить в линуксе.

Автор: andrew_121 20.1.2010, 08:03
Цитата(NuShaman @  20.1.2010,  07:47 Найти цитируемый пост)
(чо-то как-то криво ставятся, с проблемами) на Debian

ни за что не поверю!

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