c++ qt user-interface qml

Qt Designer C++ o QML para GUI



user-interface (3)

Sé que el uso de QML es bastante nuevo en QT y me preguntaba si debería diseñar mi aplicación utilizando QTDesigner o QML. Utilizaré un patrón de MVC y mi principal preocupación es que, si utilizo QML para la GUI, es posible que no sea fácil de integrar en el interior de mi aplicación C ++.

Siéntase libre de dar su consejo personal, lo agradecería mucho. ¡Gracias!


Algo que las respuestas anteriores omiten es que QML tiene la ventaja / desventaja adicional de JavaScript para la lógica de negocios (si es necesario). Actualmente estoy construyendo una aplicación de tamaño pequeño a mediano para el escritorio y ahora mis (2) usuarios alfa lo disfrutan. Estoy impresionado con la expresividad del marco y lo rápido que puedo ponerlo a prueba. En general, me resulta más rápido para trabajar que un editor de RAD (diseñador) y me gusta tener JavaScript como una alternativa en mi UI cuando estoy haciendo cosas molestas como suspender / validación, etc ...

Creo que es una cuestión de qué tan cómodo te sientes con el idioma. Si C ++ es su idioma "ir a", probablemente favorecerá al diseñador. Si vienes de la Web (confesión, soy un ingeniero de Java EE / MVC .NET dev haciendo un montón de interfaz) lo encontrarás refrescante y rápido.

También permite cierta capacidad de respuesta que los usuarios esperan en estos días. En general, le daría una gran ventaja. Pruébalo: probablemente prefieras y te molestes en el mismo marco de tiempo. Todavía estoy enojado por un par de cosas (FileIO en particular) pero he estado disfrutando el lado de la GUI de una manera que rara vez lo hago en el escritorio.


Merece la pena probar un poco de QML para comprobar si se adapta a tus necesidades.

Si está construyendo una interfaz de usuario altamente personalizada con interfaces dinámicas y animaciones, QML se adapta al trabajo; si está construyendo una aplicación de escritorio tradicional, probablemente querrá seguir con la API Qt C ++.

En lo que respecta a la integración entre QML y C ++, QML está diseñado para integrarse fácilmente con código C ++, y muchas aplicaciones QML utilizan algún tipo de backend de C ++. Es sencillo inyectar objetos C ++ en una interfaz QML o escribir elementos personalizados QML en C ++. Eche un vistazo a http://doc.qt.io/archives/qt-4.7/qtbinding.html y http://doc.qt.io/archives/qt-4.7/qml-extending-tutorial-index.html .


QML está destinado principalmente para plataformas móviles. Debido a su juventud y su preocupación por las variadas convenciones de interfaz de plataforma, carece de controles estándar como botones y cuadros combinados (pero vea el proyecto Components ). Si usa un dispositivo móvil o su interfaz de usuario requiere un estilo visual altamente personalizado, puede que valga la pena considerar QML. Prepárese para un montón de trabajo adicional en el diseño de controles personalizados. Integrar QML y C ++ sigue siendo bastante duro en mi opinión. Personalmente, recomendaría usar QML solo para aplicaciones más simples, solo en plataformas móviles, y solo con JavaScript. En las circunstancias adecuadas, podría considerar escribir elementos personalizados de QML en C ++.

La API C ++ de Qt no va a desaparecer pronto. También está diseñado teniendo en cuenta el escritorio y hará un mejor trabajo para cumplir las expectativas de los usuarios en las plataformas de escritorio. Si está en el escritorio, le recomendaría seguir con C ++ y Designer. Incluso después de que QML madure un poco, probablemente no sea la solución adecuada para la mayoría de las aplicaciones de escritorio.

¡Actualizar!

Parece que las cosas están empezando a cambiar . Todavía no he probado los nuevos componentes, y la documentación parece un poco escasa (o al menos, fuera del camino), pero esto eventualmente podría eliminar la mayor barrera para usar QML en el escritorio. Queda por ver si esto obtendrá soporte a largo plazo, pero si está dispuesto a aceptar el riesgo de ser uno de los primeros en adoptar, creo que QML puede ser ahora una opción viable para las aplicaciones de escritorio.