c++ - Mezcla de Qt y Boost
(6)
Considere que Boost Signals2 están disponibles y son seguros para subprocesos.
Estoy buscando comenzar un proyecto en C ++ usando el marco Qt 4 (se requiere una GUI multiplataforma). He escuchado grandes cosas sobre las bibliotecas de Boost de amigos y en línea. Empecé a leer ambas cosas y quería hacer una pregunta superficial antes de profundizar demasiado: ¿son estos dos "sistemas" de desarrollo mutuamente excluyentes?
Mi búsqueda y lectura iniciales muestran cierta superposición en el manejo de señal, sistemas de compilación personalizados y otras primitivas de bajo nivel.
¿Tiene sentido usarlos a ambos en el mismo proyecto?
Hay problemas potenciales con el uso de Boost.Signals junto con QT. Estos están documentados en las preguntas frecuentes de Boost.Signals .
Nosotros (Last.fm) los utilizamos juntos, aunque recién comenzamos a hacerlo, y todavía no tenemos mucha experiencia. Hasta ahora todo está bien :)
Sí, tiene perfecto sentido. En general, preferiría usar las funciones boost / stdlib cuando sea posible en lugar de sus alternativas Qt.
Hace que el código sea más fácil de transportar al siguiente marco.
Hace que sea más fácil para los nuevos programadores que no son Qt ponerse al día.
Boost tiene una gran funcionalidad y está obteniendo más todo el tiempo.
Nota: las cadenas hacia / desde widgets son probablemente la principal excepción: dentro de la GUI utilizaría cadenas Qt para guardar conversiones confusas en todas partes.
Este documento compara el mecanismo de ranuras de señales en QT y Boost::Signal muy decente. Es una lectura obligada para aquellos que son un poco curiosos de esta mezcla.
Especialmente dado que va a usar plataformas cruzadas, debe tener una arquitectura muy bien acodada, con la lógica comercial y el acceso a los datos lo más alejado posible de la GUI. En este caso, tendría sentido usar Boost al escribir el backend de su aplicación, y solo saltar a Qt para el frontend, con la pila obligatoria de moldes hechos en el pegamento.
Si su "motor" está separado de su elección de GUI, podrá cambiar Qt por otra cosa en el futuro (bibliotecas nativas tal vez) con un mínimo esfuerzo.