![]() | Algunos cambios aquí y allá |
Prev | Next |
Como habrá notado, cuando el usuario cambia el color en el botón de color, los deslizadores cambian sus valores, pero esto no ocurre en la situación inversa. Vamos a arreglarlo.
Añadiremos m_colorButton->setColor(m_color); a CentralView::updatePixmap y así haremos que m_colorButton actualice su valor al mismo tiempo que se actualiza el mapa de pixels.
Quizá quiera actualizar m_colorButton cada vez que cambie uno de los deslizadores, pero si lo hace, podría tener problemas y posiblemente tendría que utilizar QObject::blockSignals para bloquear las señales de los deslizadores o de m_colorButton, así que lo actualizaremos en updatePixmap para estar seguros del correcto funcionamiento.
En primer lugar, vamos a eliminar el logotipo de Qt que utiliza m_label de forma predeterminada. Para hacerlo, abra centralviewbase.ui en el diseñador, seleccione la etiqueta y elimine el contenido de la propiedad pixmap pinchando en la pequeña flecha roja (aparece al seleccionar la propiedad).
En cualquier caso, queremos que haya algo dibujado al comenzar. Así que añadiremos una llamada a updatePixmap(); en el constructor de CentralView.
Aun así, m_pixmap está vacío al iniciar TheTinter, y seguimos queriendo que aparezca algo. Vamos a modificar la función updatePixmap para:
void CentralView::updatePixmap() { m_colorButton->setColor(m_color); QPixmap pixmap; if (!m_pixmap.isNull()) { QImage image= m_pixmap.convertToImage(); KImageEffect::blend(m_color, image, m_alpha->value()/100.0 ); pixmap.convertFromImage(image); } else { pixmap = QPixmap(128,128); pixmap.fill(m_color); } m_label->setPixmap(pixmap); }
De esta forma, en primer lugar comprobamos si m_pixmap es válido (no es nulo) y, en ese caso, continuamos con el funcionamiento normal. En caso de que m_pixmap no haya sido inicializado, haremos lo que se vio en los primeros pasos del tutorial y pintaremos un color.
Prev | Home | Next |
Añadir las implementaciones de los nuevos métodos | Up | Añadir más características |