AlbumShaper
1.0a3
|
A clickable label. More...
#include <clickableLabel.h>
Public Slots | |
void | setEnabled (bool val) |
void | setPixmap (const QPixmap &p) |
Signals | |
void | clicked () |
Public Member Functions | |
ClickableLabel (QWidget *parent=0, const char *name=0) | |
void | setInvisible (bool val) |
Protected Member Functions | |
void | paintEvent (QPaintEvent *e) |
double buffer to avoid flicker | |
void | enterEvent (QEvent *) |
void | leaveEvent (QEvent *) |
void | mouseMoveEvent (QMouseEvent *e) |
void | mousePressEvent (QMouseEvent *) |
void | mouseReleaseEvent (QMouseEvent *e) |
Private Member Functions | |
void | setActive () |
void | setHighlighted () |
Private Attributes | |
QPixmap | defaultPixmap |
bool | enabled |
bool | invisible |
bool | pressed |
A clickable label.
Definition at line 23 of file clickableLabel.h.
ClickableLabel::ClickableLabel | ( | QWidget * | parent = 0 , |
const char * | name = 0 |
||
) |
void ClickableLabel::clicked | ( | ) | [signal] |
Referenced by mouseReleaseEvent().
void ClickableLabel::enterEvent | ( | QEvent * | ) | [protected] |
Definition at line 117 of file clickableLabel.cpp.
References enabled, pressed, setActive(), and setHighlighted().
{ if( !enabled ) return; if( pressed ) setActive(); else setHighlighted(); }
void ClickableLabel::leaveEvent | ( | QEvent * | ) | [protected] |
Definition at line 109 of file clickableLabel.cpp.
References defaultPixmap, enabled, and setPixmap().
{ if( !enabled ) return; if(!defaultPixmap.isNull()) { this->setPixmap( defaultPixmap ); } }
void ClickableLabel::mouseMoveEvent | ( | QMouseEvent * | e | ) | [protected] |
Definition at line 89 of file clickableLabel.cpp.
References defaultPixmap, enabled, height, pressed, setActive(), setHighlighted(), setPixmap(), and width.
{ if( !enabled ) return; QPoint p = e->pos(); if( p.x() < 0 || p.y() < 0 || p.x() >= width() || p.y() >= height() ) { if(!defaultPixmap.isNull()) { this->setPixmap( defaultPixmap ); } } else { if( pressed ) setActive(); else setHighlighted(); } }
void ClickableLabel::mousePressEvent | ( | QMouseEvent * | ) | [protected] |
Definition at line 185 of file clickableLabel.cpp.
References enabled, pressed, and setActive().
void ClickableLabel::mouseReleaseEvent | ( | QMouseEvent * | e | ) | [protected] |
Definition at line 193 of file clickableLabel.cpp.
References clicked(), defaultPixmap, enabled, height, invisible, pressed, setPixmap(), and width.
{ if( !enabled || invisible ) return; pressed = false; //restore pixmap if exists if(!defaultPixmap.isNull()) { this->setPixmap( defaultPixmap ); } //if mouse still over button emit clicked signal if(e->pos().x() >= 0 && e->pos().y() >= 0 && e->pos().x() < width() && e->pos().y() < height() ) { emit clicked(); } }
void ClickableLabel::paintEvent | ( | QPaintEvent * | e | ) | [protected] |
double buffer to avoid flicker
Definition at line 31 of file clickableLabel.cpp.
References buffer, and invisible.
{ QPixmap buffer( size() ); QPainter bufferPainter( &buffer ); bufferPainter.setClipping(false); bufferPainter.fillRect( buffer.rect(), backgroundBrush() ); //only paint label if not invisible if( !invisible ) { bufferPainter.drawImage( QPoint(0,0), pixmap()->convertToImage() ); } bufferPainter.end(); bitBlt( this, e->rect().x(), e->rect().y(), &buffer, e->rect().x(), e->rect().y(), e->rect().width(), e->rect().height() ); }
void ClickableLabel::setActive | ( | ) | [private] |
Definition at line 127 of file clickableLabel.cpp.
References b, defaultPixmap, and setPixmap().
Referenced by enterEvent(), mouseMoveEvent(), and mousePressEvent().
{ if( ! defaultPixmap.isNull() ) { //create darkened out version QImage newImage = defaultPixmap.convertToImage(); QImage alpha = newImage.createAlphaMask(); int x, y; for(y=0; y<newImage.height(); y++) { for(x=0; x<newImage.width(); x++) { if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0) { QRgb rgb = newImage.pixel(x,y); int r = (int) (0.5*qRed(rgb)); int g = (int) (0.5*qGreen(rgb)); int b = (int) (0.5*qBlue(rgb)); rgb = qRgb( r, g, b ); newImage.setPixel( x, y, rgb ); } } } QPixmap newPixmap; newPixmap.convertFromImage( newImage ); QLabel::setPixmap( newPixmap ); } }
void ClickableLabel::setEnabled | ( | bool | val | ) | [slot] |
Definition at line 56 of file clickableLabel.cpp.
References defaultPixmap, enabled, and setPixmap().
Referenced by EditingInterface::EditingInterface(), EditingInterface::handleSelectionChanged(), EditingInterface::setPhoto(), and MosaicOptionsDialog::updateImagesFromOptions().
{ if( val ) setPixmap( defaultPixmap ); else if( ! defaultPixmap.isNull() ) { //create over exposed gray version QImage newImage = defaultPixmap.convertToImage(); QImage alpha = newImage.createAlphaMask(); int x, y; for(y=0; y<newImage.height(); y++) { for(x=0; x<newImage.width(); x++) { if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0) { QRgb rgb = newImage.pixel(x,y); int gray = qGray(rgb); double alpha = 0.5; gray = (int) (alpha*gray+(1-alpha)*255); rgb = qRgb( gray, gray, gray ); newImage.setPixel( x, y, rgb ); } } } QPixmap newPixmap; newPixmap.convertFromImage( newImage ); QLabel::setPixmap( newPixmap ); } enabled = val; }
void ClickableLabel::setHighlighted | ( | ) | [private] |
Definition at line 156 of file clickableLabel.cpp.
References b, defaultPixmap, and setPixmap().
Referenced by enterEvent(), and mouseMoveEvent().
{ if( ! defaultPixmap.isNull() ) { //create slightly darker version QImage newImage = defaultPixmap.convertToImage(); QImage alpha = newImage.createAlphaMask(); int x, y; for(y=0; y<newImage.height(); y++) { for(x=0; x<newImage.width(); x++) { if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0) { QRgb rgb = newImage.pixel(x,y); int r = (int) (0.8*qRed(rgb)); int g = (int) (0.8*qGreen(rgb)); int b = (int) (0.8*qBlue(rgb)); rgb = qRgba( r, g, b, qAlpha(rgb) ); newImage.setPixel( x, y, rgb ); } } } QPixmap newPixmap; newPixmap.convertFromImage( newImage ); QLabel::setPixmap( newPixmap ); } }
void ClickableLabel::setInvisible | ( | bool | val | ) |
Definition at line 213 of file clickableLabel.cpp.
References invisible.
Referenced by SaveDialog::nextScreenShot(), SaveDialog::prevScreenShot(), EditingInterface::setPhoto(), EditingInterface::showNextPrevFirstLastPhoto(), and SaveDialog::updatePreview().
void ClickableLabel::setPixmap | ( | const QPixmap & | p | ) | [slot] |
Definition at line 49 of file clickableLabel.cpp.
References defaultPixmap.
Referenced by EditingInterface::EditingInterface(), GrainEditor::GrainEditor(), HistogramEditor::HistogramEditor(), leaveEvent(), MosaicOptionsDialog::MosaicOptionsDialog(), mouseMoveEvent(), mouseReleaseEvent(), SaveDialog::SaveDialog(), setActive(), setEnabled(), and setHighlighted().
{ defaultPixmap = p; defaultPixmap.detach(); QLabel::setPixmap( p ); }
QPixmap ClickableLabel::defaultPixmap [private] |
Definition at line 56 of file clickableLabel.h.
Referenced by leaveEvent(), mouseMoveEvent(), mouseReleaseEvent(), setActive(), setEnabled(), setHighlighted(), and setPixmap().
bool ClickableLabel::enabled [private] |
Definition at line 57 of file clickableLabel.h.
Referenced by ClickableLabel(), enterEvent(), leaveEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), and setEnabled().
bool ClickableLabel::invisible [private] |
Definition at line 58 of file clickableLabel.h.
Referenced by ClickableLabel(), mouseReleaseEvent(), paintEvent(), and setInvisible().
bool ClickableLabel::pressed [private] |
Definition at line 59 of file clickableLabel.h.
Referenced by ClickableLabel(), enterEvent(), mouseMoveEvent(), mousePressEvent(), and mouseReleaseEvent().