void QwtPicker::drawTracker(QPainter *painter) const { const QRect textRect = trackerRect(painter->font()); if ( !textRect.isEmpty() ) { QwtText label = trackerText(d_data->trackerPosition); if ( !label.isEmpty() ) { painter->save(); #if defined(Q_WS_MAC) // Antialiased fonts are broken on the Mac. #if QT_VERSION >= 0x040000 painter->setRenderHint(QPainter::TextAntialiasing, false); #else QFont fnt = label.usedFont(painter->font()); fnt.setStyleStrategy(QFont::NoAntialias); label.setFont(fnt); #endif #endif label.draw(painter, textRect); painter->restore(); } } }
void QwtPicker::drawTracker(QPainter *painter) const { const QRect textRect = trackerRect(painter); if ( !textRect.isEmpty() ) { QwtText label = trackerText(d_data->labelPosition); if ( !label.isEmpty() ) label.draw(painter, textRect); } }
//! Update the state of rubber band and tracker label void QwtPicker::updateDisplay() { QWidget *w = parentWidget(); bool showRubberband = false; bool showTracker = false; if ( w && w->isVisible() && d_data->enabled ) { if ( rubberBand() != NoRubberBand && isActive() && rubberBandPen().style() != Qt::NoPen ) { showRubberband = true; } if ( trackerMode() == AlwaysOn || ( trackerMode() == ActiveOnly && isActive() ) ) { if ( trackerPen() != Qt::NoPen && !trackerRect( QFont() ).isEmpty() ) { showTracker = true; } } } QPointer< QwtPickerRubberband > &rw = d_data->rubberBandOverlay; if ( showRubberband ) { if ( rw.isNull() ) { rw = new QwtPickerRubberband( this, NULL ); // NULL -> no extra event filter rw->setObjectName( "PickerRubberBand" ); rw->setParent( w ); rw->resize( w->size() ); } if ( d_data->rubberBand <= RectRubberBand ) rw->setMaskMode( QwtWidgetOverlay::MaskHint ); else rw->setMaskMode( QwtWidgetOverlay::AlphaMask ); rw->updateOverlay(); } else { if ( d_data->openGL ) { // Qt 4.8 crashes for a delete if ( !rw.isNull() ) { rw->hide(); rw->deleteLater(); rw = NULL; } } else { delete rw; } } QPointer< QwtPickerTracker > &tw = d_data->trackerOverlay; if ( showTracker ) { if ( tw.isNull() ) { tw = new QwtPickerTracker( this, NULL ); // NULL -> no extra event filter tw->setObjectName( "PickerTracker" ); tw->setParent( w ); tw->resize( w->size() ); } tw->setFont( d_data->trackerFont ); tw->updateOverlay(); } else { if ( d_data->openGL ) { // Qt 4.8 crashes for a delete if ( !tw.isNull() ) { tw->hide(); tw->deleteLater(); tw = NULL; } } else { delete tw; } } }