Visualizar imagen en Qt
Hola amigos:
He estado programando un visor de imagenes en Qt, para ello he usado la clase QLabel y el metodo setPixmap para mostrar las imagenes. Hasta aqui todo va bien, ahora quiero seleccionar alguna parte de la imagen y para ello quiero dibujar un rectangulo sobre el QLabel que muestra la imagen, para eso redefini el evento
paintEvent() y resulta que cada vez que se llama ese evento se borra la imagen mostrada lo que es logico pues segun la documentacion cada vez que se ejecuta paintEvent() se limpia el contenido de la ventana.
Existe alguna forma de cambiar esto ????
La solucion mas obvia es usar QGraphicsView y QGrahicPixmapItem sin embargo las imagenes con que trabajo son muy grandes y me es comodo usar un QLabel para mostrarlas ya que solo muestro la parte que me interasa desplazandome por la imagen.
- Inicie sesión o regístrese para enviar comentarios
- 872 lecturas


ojo, a lo mejor digo una tontería que hace mucho que no me pego con qt, pero...
¿Llamas en tu evento paintEvent a QLabel::paintEvent() antes de terminarlo?
No, no lo hago ....
De hecho cada vez que reimplemento una funcion en mi clase derivada nunca llamo explicitamente la correspondiente funcion en la clase base.
Cual es la diferencia ?????
Pues que si no llamas a la función de la clase base, no se ejecutan los procesos por defecto, es decir que si reescribes un método de la clase derivada que "hace cosas", pues si quieres que se sigan haciendo, las debes implementar tú, o dejar que las efectúe el método por defecto. Si el método por defecto no hace nada, pues no hace falta llamarlo, pero en este caso, es el que se encarga de pintarte la imagen leyendo qué debe pintar (se lo has dicho con setPixmap).
Luego viene si lo tienes que llamar antes o después, porque si lo llamas antes, posiblemente pinte encima de lo que ya has pintado tú y te lo tape, así que...