2011-01-07 8 views
11

Tengo que portar un proyecto de Borland C++ Builder 5.0 en Windows XP a Qt 4.7.1 usando g ++ en Windows 7/mingw. Las bibliotecas y las utilidades de línea de comandos están listas, y ahora tengo que abordar las aplicaciones de GUI, que usan Borland VCL.
¿Alguien puede recomendar alguna herramienta o biblioteca para facilitar esta tarea?
¿Alguien tiene alguna experiencia con esto?Portando Borland C++ Builder a Qt

Editado para agregar: Bueno, tomé el toro por los cuernos, e implementé la GUI desde el principio. Y debo decir que los comentaristas tenían razón: no veo ninguna forma de utilizar la GUI existente de Borland para facilitar el proceso.

+0

¿Cuántas formas tienen sus GUI de C++ Builder? ¿Solo unas pocas, docenas, cientos? Como probablemente sepa, obtendrá los mejores resultados si crea las GUI de Qt desde cero. –

+0

Algunas docenas de formularios. Algunos de ellos son bastante complicados, con vistas de árbol, pestañas, etc. Así que no quiero crearlos todos desde cero si puedo evitarlo. – TonyK

+0

Me he estado preguntando cuando alguien hace esta misma pregunta :) Sin embargo, la conversión automática de VCL a Qt no parece ser una tarea factible. –

Respuesta

8

Existen varias grandes diferencias entre VCL y Qt que harán que un proceso de conversión automática sea bastante difícil.

  • Qt usa señales y ranuras y herencia donde VCL usa eventos.
  • Los componentes VCL usan coordenadas absolutas y Qt usa diseños. Por supuesto, podría usar coordenadas absolutas también con Qt, pero las GUI serían bastante horribles en ese momento.
  • Las clases TListBox y TTreeView de VCL son bastante diferentes de las clases de Vista y Modelo de Qt (aunque en su lugar podría usar QListWidget y QTreeWidget).

Supongo que es mucho más rápido diseñar GUI totalmente nuevas con Qt que crear incluso un mediocre convertidor VCL a Qt. Y el código será mucho más fácil de mantener. Sugiero que tomes una forma VCL de mediana complejidad y la vuelvas a crear con Qt. Después de eso, puedes hacer una estimación del trabajo de recreación total. También comprenderá mejor la viabilidad de una herramienta de conversión, que probablemente deba hacer usted mismo.

1

Alguien ha escrito una herramienta para convertir archivos de DFM a ui qt:

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

Su tiene algunos errores pequeños pero puede ahorrar varias horas de tiempo de portar diseños de la forma. En algunos casos, es preferible rediseñar formularios específicos, pero en muchos casos, tener etiquetas y controles más o menos equivalentes colocados para usted ahorra una gran cantidad de acciones de apuntar y hacer clic.

+0

Probé la herramienta. El resultado no me satisfizo en absoluto.Veo que la mejor manera de portar el proyecto es implementar la GUI desde cero, como dijo el autor. – vrogach

+0

Totalmente depende de la cantidad de controles en el formulario, etc. Me ha ahorrado mucho trabajo, pero los archivos .ui requieren mucha reorganización. Pero al menos los controles tienen los mismos nombres de variable y ya se han agregado a los formularios. Una reescritura completa siempre introducirá muchos errores nuevos. – Pete

1

Estoy de acuerdo con el consenso actual de que la conversión automática de VCL a QT no es una buena idea porque el concepto detrás de ambos es muy diferente, y es mucho mejor aprender "el camino QT" y usarlo desde el principio.
Sin embargo, hay un paso importante que nadie ha mencionado aún: ¡refactorización! Antes de comenzar, asegúrese de refactorizar los formularios originales para eliminar la mayor lógica comercial posible y dejar solo lo que realmente es el código GUI. Depende de qué tan buena es su arquitectura, por supuesto, pero el diseñador de VCL tiende a alentar a poner tanto como sea posible en los formularios (¡incluso llegando a tener "formas de datos" invisibles con componentes no visuales!), Por lo que a menudo encuentra muchas cosas en la forma que no deberían estar ahí.

Cuestiones relacionadas