Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/04/2016, 08:17
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: Qt. Reutilizar widgets en distintas partes del programa

Cita:
Iniciado por dehm Ver Mensaje
A estas alturas todavía así....
Algunos gurús de C++ dicen que a estas alturas de la vida lo mejor es no usar nunca new salvo causas de fuerza mayor.

Para ayudarte en esa tarea tienes std::make_shared y std::make_unique, que te crean automáticamente instancias de punteros inteligentes... o crear los objetos locales en la pila para eso está :)

Cita:
Iniciado por dehm Ver Mensaje
Por otro lado, centrándonos en la cuestión, ciertamente la solución que propones es la más lógica, en cualquiera de las dos versiones. Pero mi idea era utilizar exactamente la misma instancia del widget, no una diferente, ya que la idea, además de tener el código legible y en condiciones era no repetir las consultas cada vez que hay que crear un widget.
Si no quieres repetir la query siempre puedes cachear el resultado... ahora que eso implica que has de preocuparte de actualizar dicha caché cada vez que esa tabla se actualize.

Cita:
Iniciado por dehm Ver Mensaje
Luego cada vez que necesite un nuevo QLineEdit o QComboBox sólo he de añadirle el completer o model

¿Qué te parece la idea?
En C++ como norma general no hay una única forma de hacer las cosas y sí muchos buenos caminos para conseguir lo mismo. Si has encontrado uno adelante con ello.

Por otro lado yo insisto. No te preocupes por el rendimiento salvo que estés desarrollando librerías para terceros. El motivo es que estás trabajando sobre un código inacabado que puede sufrir cambios... preocuparse ahora del rendimiento salvo que el problema sea bastante evidente es absurdo por varios motivos:
  • Si cambia el código puedes perder los beneficios de la optimización hasta el punto de resultar ésta perjudicial
  • Estás invirtiendo tiempo en algo que puede no aportar absolutamente nada. Un retardo de unas décimas de segundo en una interfaz de usuario es aceptable
  • Optimizar normalmente conlleva hacer código feo y poco legible y eso repercute en el mantenimiento de la aplicación.

En el caso de librerías para terceros la cosa cambia porque ya no puedes adivinar cómo va a ser usada esa librería, luego las mejoras de rendimiento se pueden realizar en cualquier momento siempre procurando que la funcionalidad no se vea alterada.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.