2008-12-11 22 views
65

Estoy tratando de iniciar un proyecto en C++ utilizando 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?Mezcla de Qt y Boost

Mi búsqueda inicial y lectura muestra cierta superposición en el manejo de señales, sistemas de compilación personalizados y otras primitivas de bajo nivel.

¿Tiene sentido usar ambos en el mismo proyecto?

Respuesta

55

Sí, tiene mucho 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 los widgets son probablemente la principal excepción: dentro de la GUI usaría cadenas Qt para guardar las versiones confusas en todas partes.

+30

Qt también tiene una gran funcionalidad y también está recibiendo más todo el tiempo. Qt tiene una gran (mejor) documentación en comparación con la de Boost (según mi experiencia de uso de ambos). Uno podría argumentar que el uso de Boost también lo hace más difícil para los programadores que no son Boost. – sivabudh

+12

Verdadero para el impulso, pero aún así usaría std :: vector, etc. en las clases de colección de Qt –

7

Nosotros (Last.fm) los utilizamos juntos, aunque recién comenzamos a hacerlo, y por lo tanto todavía no tenemos mucha experiencia. Hasta ahora todo está bien :)

17

Especialmente porque vas multiplataforma, deberías tener una arquitectura muy bien acodada, con la lógica de negocios 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" es independiente de la opción de su GUI, podrá cambiar Qt por otra cosa en el futuro (bibliotecas nativas tal vez) con un mínimo esfuerzo.

3

Existen problemas potenciales con el uso de Boost.Signals junto con QT. Estos están documentados en el Boost.Signals FAQ.

31

This paper compara signal slots mecanismo en QT y Boost::Signal muy decentemente. Es una lectura obligada para aquellos que son un poco curiosos de esta mezcla.

+1

Buen papel. Gracias por el enlace. – dwj