¿Cuáles son los rincones peligrosos de Qt? [cerrado]

10

No hay nada perfecto bajo el sol. Qt no es una excepción, y tiene limitaciones: no podemos usar pixmaps en un hilo que no sea GUI, no podemos usar QImage con formato de imagen de 16 bits por canal, etc.

¿Qué situaciones te han obligado a estropear el diseño debido a las limitaciones de Qt?
¿Cuáles son las peculiaridades más odiadas?
¿Qué decisiones de diseño se deben evitar al usar Qt en sus proyectos?

vides
fuente
¿Puedes decir el Qt? Si expande a "Q Toolkit", se puede añadir un "la" delante de él, pero ¿es correcto / buenas prácticas decir el Qt? Sólo curioso.
Anto
@Anto: supongo, theestá obligado cornersaquí, no Qt, pero es solo mi sensación intuitiva, ya que soy ruso :)
vides
Una posible curva peligrosa es que el proyecto puede estar en problemas financieros. Nokia recientemente firmó un acuerdo con Microsoft (para usar Win7 en sus teléfonos) que pone el futuro de Qt en terreno inestable.
Peter Rowell
Estoy muy interesado en saber esta respuesta porque soy un novato en la programación visual de C ++: D
Shaheer
@Vines: ¿Qué tal "¿Cuáles son los rincones peligrosos de QT?"
Chris

Respuestas:

12

Irónicamente, diría que el poder de Qt también es uno de los inconvenientes. Hay tantas construcciones y extensiones poderosas, el código que escribe en Qt se vuelve muy arraigado en la "forma Qt". Intentar extraer la funcionalidad a otro idioma no solo significa una reescritura, sino que debes conocer mucha tecnología específica de Qt.

La amplitud de Qt significa que contratar programadores significa comprometerse con alguien con experiencia en Qt o capacitarse para esa experiencia. Hacer que un contratista se ponga al día y sea más rápido es más difícil que el C ++ de vainilla.

Cuando Qt cambió de 3.xa 4.x, nuestro equipo requirió casi 9 meses para realizar el puerto, tiempo durante el cual se agregó poca funcionalidad nueva. Espera compensar ese importante costo de actualización con una mayor eficiencia de desarrollo el resto del tiempo. (Tenga en cuenta que he omitido las ventajas de Qt, de las cuales también hay muchas)

James Creasy
fuente
2
El puerto Qt3 a Qt4 fue difícil para la mayoría de las personas que conozco. Este QML y cosas similares que se han introducido en las versiones más nuevas me preocupan, ya que puede significar una vez más que se avecina un puerto complicado.
Vitor Py
10

Qt no utiliza la biblioteca estándar de C ++ , pero tiene su propio QString, QVector, QMap, ...

Esto significa que debe tomar una decisión de diseño importante: ¿qué partes de la aplicación usarán QString y qué partes usarán std :: string?

El uso de std :: string en algunas partes y QString en otras partes, significa que tendrá que convertir entre QString y std :: string en los límites.

Para evitar esa sobrecarga, uno podría decidir usar QString en toda su aplicación. Pero eso hace que sea mucho más difícil usar bibliotecas de terceros que no estén basadas en Qt, por ejemplo, boost.

(Tenga en cuenta que lo mismo se aplica a std :: map vs QMap, std :: vector vs QVector, etc.)

Decidir qué partes usan los tipos de Qt y qué partes usan el STL es una decisión de diseño importante, con implicaciones importantes. Y solo porque Qt se niega a usar la biblioteca estándar de C ++.

En mi humilde opinión, esa decisión podría ir en cualquier dirección, dependiendo del proyecto. Así que no puedo responder a su pregunta cuál evitar.

Sjoerd
fuente
1
Estoy de acuerdo, pero saldría al límite y diría que QString (etc., etc.) también es uno de los puntos fuertes, ya que es muy agradable trabajar con ellos.
Johan
1
Además, no es tan difícil usar una biblioteca que no usa QString. Hay un método simple para convertir un QString en un std :: string y viceversa. No mucho.
@Glenn Nelson: Sí, hoy en día hay funciones de conversión para QString; Muy útil y conveniente! Pero especialmente para QVector y QMap habrá una sobrecarga en la conversión (y las soluciones simples no funcionarán, por ejemplo, QVector <QString>); Esa sobrecarga debe considerarse durante el diseño para evitar problemas de rendimiento en el futuro.
Sjoerd
3

Esto no responde directamente a la pregunta, pero creo que vale la pena mencionarlo: quizás el aspecto más 'peligroso' de Qt es que Nokia se ha metido en la cama con MSoft ...

Vector
fuente
2
Pero abandonaron Qt para hacerlo.
Martin Beckett
1
En aras de la integridad: la parte comercial de Qt ahora es propiedad de Digia, mientras que Qt se ha movido a un sistema de "gobierno abierto" donde otros pueden contribuir fácilmente. También existe la base KDE Free Qt que protege a Qt de ir a código cerrado.
Vishesh Handa
2

Recientemente descubrí que un QChar, a pesar de su nombre, en realidad no corresponde a un personaje sino a una unidad de código UTF-16. Por lo tanto, cuando desea escanear un texto arbitrario Unicode carácter por carácter, debe agregar algoritmos para tratar con sustitutos altos y bajos, combinando caracteres y similares.

Sebastian Negraszus
fuente