10 #include "qwt_text_label.h" 
   12 #include "qwt_painter.h" 
   16 #include <qstyleoption.h> 
   21 class QwtTextLabel::PrivateData
 
   63 void QwtTextLabel::init()
 
   65     m_data = 
new PrivateData();
 
   66     setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
 
   86     return m_data->text.text();
 
   99     m_data->text.setText( 
text, textFormat );
 
  135     return m_data->indent;
 
  156     return m_data->margin;
 
  180     QSizeF sz = m_data->text.textSize( font() );
 
  182     const QMargins m = contentsMargins();
 
  184     int mw = m.left() + m.right() + 2 * m_data->margin;
 
  185     int mh = m.top() + m.bottom() + 2 * m_data->margin;
 
  187     int indent = m_data->indent;
 
  193         const int align = m_data->text.renderFlags();
 
  194         if ( align & Qt::AlignLeft || align & Qt::AlignRight )
 
  195             mw += m_data->indent;
 
  196         else if ( align & Qt::AlignTop || align & Qt::AlignBottom )
 
  197             mh += m_data->indent;
 
  200     sz += QSizeF( mw, mh );
 
  202     return QSize( qwtCeil( sz.width() ), qwtCeil( sz.height() ) );
 
  211     const int renderFlags = m_data->text.renderFlags();
 
  213     int indent = m_data->indent;
 
  217     const QMargins m = contentsMargins();
 
  219     width -= m.left() + m.right() - 2 * m_data->margin;
 
  220     if ( renderFlags & Qt::AlignLeft || renderFlags & Qt::AlignRight )
 
  223     int height = qwtCeil( m_data->text.heightForWidth( width, font() ) );
 
  224     if ( ( renderFlags & Qt::AlignTop ) || ( renderFlags & Qt::AlignBottom ) )
 
  227     height += m.top() + m.bottom() + 2 * m_data->margin;
 
  238     QPainter painter( 
this );
 
  239     painter.setClipRegion( event->region() );
 
  243     style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, 
this);
 
  245     if ( !contentsRect().contains( event->rect() ) )
 
  247         painter.setClipRegion( event->region() & frameRect() );
 
  248         drawFrame( &painter );
 
  251     painter.setClipRegion( event->region() & contentsRect() );
 
  263     painter->setFont( font() );
 
  264     painter->setPen( palette().color( QPalette::Active, QPalette::Text ) );
 
  272         QRect focusRect = contentsRect().adjusted( m, m, -m + 1, -m + 1);
 
  281     m_data->text.draw( painter, 
textRect );
 
  290     QRect r = contentsRect();
 
  292     if ( !r.isEmpty() && m_data->margin > 0 )
 
  294         const int m = m_data->margin;
 
  295         r.adjust( m, m, -m, -m );
 
  300         int indent = m_data->indent;
 
  306             const int renderFlags = m_data->text.renderFlags();
 
  308             if ( renderFlags & Qt::AlignLeft )
 
  312             else if ( renderFlags & Qt::AlignRight )
 
  314                 r.setWidth( r.width() - 
indent );
 
  316             else if ( renderFlags & Qt::AlignTop )
 
  320             else if ( renderFlags & Qt::AlignBottom )
 
  322                 r.setHeight( r.height() - 
indent );
 
  330 int QwtTextLabel::defaultIndent()
 const 
  332     if ( frameWidth() <= 0 )
 
  337         fnt = m_data->text.font();
 
  345 #include "moc_qwt_text_label.cpp" 
static void drawFocusRect(QPainter *, const QWidget *)
Draw a focus rectangle on a widget using its style.
static int horizontalAdvance(const QFontMetrics &, const QString &)
A class representing a text.
@ PaintUsingTextFont
The text has an individual font.
void setPlainText(const QString &)
virtual int heightForWidth(int) const override
int indent() const
Return label's text indent in pixels.
int margin() const
Return label's text margin in pixels.
const QwtText & text() const
Return the text.
virtual QSize sizeHint() const override
Return a size hint.
void clear()
Clear the text and all QwtText attributes.
QString plainText() const
virtual QSize minimumSizeHint() const override
Return a minimum size hint.
QwtTextLabel(QWidget *parent=NULL)
virtual void drawContents(QPainter *)
Redraw the text and focus indicator.
void setText(const QString &, QwtText::TextFormat textFormat=QwtText::AutoText)
virtual void paintEvent(QPaintEvent *) override
virtual ~QwtTextLabel()
Destructor.
virtual void drawText(QPainter *, const QRectF &)
Redraw the text.