Nota : En esta respuesta, "Qt Widgets" se refiere a una aplicación Qt Widgets, que se puede seleccionar al crear una nueva aplicación Qt.
Esto es siete años después de que se publicó la pregunta ... pero aquí está mi " objetivo " de dos centavos para neutralizar cualquier desarrollo desde entonces.
Un repaso
Idioma
Los proyectos de Qt Quick utilizan QML y JavaScript .
Los proyectos de Qt Widgets utilizan código C ++. (PyQt y PySide, enlaces de Python para Qt, usa Python).
Rendimiento y codificación
Como tal, Qt Widgets podría considerarse de bajo nivel en comparación con Qt Quick. Pero esto implica que, a la larga, un proyecto de Qt Widgets se ejecutará más rápido y tendrá un mejor rendimiento. Sin embargo, ser de bajo nivel puede ser bueno, ya que Qt Widgets está más expuesto a la API nativa (el módulo QtCore , Qt Style Sheets , etc.). Dicho esto, a menudo se usa para el desarrollo de escritorio.
Qt Quick se adapta más al desarrollo móvil (aunque todavía se puede utilizar en el desarrollo de escritorio). Tiene ventanas emergentes , animaciones , pestañas y diseños listos para usar , elementos deslizables , cajones y los controles habituales; todo omnipresente en el desarrollo móvil.
Diseño de UI
Ambos tienen ui
archivos que funcionan con QtDesigner, lo que proporciona una vista de alto nivel para configurar diseños y crear interfaces. (En Qt Quick, las extensiones son .ui.qml
. En Qt Widgets, lo son .ui
.) Los .ui
archivos no son obligatorios ni necesarios: tiene la opción de hacer diseño y maquetación mediante programación usando QML / JS o C ++ / Python.
Aprendizaje
Si eres completamente nuevo en la programación, te sugiero que primero eches un vistazo a Qt Quick. Personalmente, creo que Qt Quick tiene una curva de aprendizaje más suave y es más fácil trabajar con él para lograr innumerables proyectos. Se llama "Qt Quick " por una razón. (Sin embargo, no menosprecie los widgets de Qt, tienen algunos módulos agradables que superan a QtQuick).
Sin embargo, si has estado en la programación con C ++ o Python antes, sugeriría echar un vistazo a Qt Reproductores primero, para acostumbrarse a sus señales y mecanismo de ranura y módulos que usted (por ejemplo, podría interesar sql
, network
, gui
) junto con la programación de diseños (por ejemplo, programación de modelo / vista para mostrar datos).
Especialmente con C ++, la mayoría de las bibliotecas que no son de Qt que manejan while
eventos usan bucles, este no es el caso de Qt. Usan señales y ranuras .
Al final, incluso si está utilizando principalmente Qt Widgets, es posible que desee mirar Qt Quick, ya que ofrece un lenguaje declarativo de alto nivel para trabajar y le permite configurar las cosas más rápidamente. (Especialmente para desarrollo móvil).
Qt proporciona ejemplos en abundancia para proyectos Qt Quick y Qt Widget , junto con un foro . No debe preocuparse por obtener ayuda a largo plazo. (¡No olvide StackOverflow!)
Qt Quick + Qt Widget
Hasta ahora los hemos tratado como entidades separadas. Pero es posible integrar QML en C ++ . Esto le permite aprovechar Qt Widget, C ++ y otros módulos. Por ejemplo, QtQuick proporciona un TreeView
pero no un TreeModel
, que puede / debe registrarse en QML desde C ++. A menudo hay una separación de temas de interés, donde Qt recomienda separar los programas en UI y la lógica en QML y C ++ respectivamente.
Esto también es útil, si por ejemplo, necesita un backend para consultas SQL intensas, algoritmos o solicitudes http / xml asíncronas. ¿No es genial? Interfaz QML / JS más un backend C ++. Fullstack Qt'er. :-)
(Lo que no he probado es tener un backend de Python. Todavía no he tocado PyQt ...)