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?
qt
design-decisions
vides
fuente
fuente
the
está obligadocorners
aquí, noQt
, pero es solo mi sensación intuitiva, ya que soy ruso :)Respuestas:
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)
fuente
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.
fuente
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 ...
fuente
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.
fuente