Qt QPainter schrift in Rechteck zeichnen

Orbit

Erfahrenes Mitglied
Hallo,
wie kann ich einen Buchstaben aus einer Font mit QPainter zeichnen, sodass er unabhängig von der gesetzten Schriftgröße der Font in ein bestimmtes Rechteck gemalt wird?

void drawText ( const QRect & rectangle, int flags, const QString & text, QRect * boundingRect = 0 )

Geht irgendwie nicht so wie ich es verstehe.
Wozu genau ist das zweite Rechteck da?

LG Orbit
 
Moin,

drawText(...) ist scho richtig - das boundingRect beschreibt den Platz, den Dein Text einnimmt, das erste QRect die Fläche auf der er "gezeichnet" werden soll.

das boundingRect bekommst Du folgend heraus:
Code:
void DEIN_QWIDGET_CLASSNAME::paintEvent(QPaintEvent *event) {
  Q_UNUSED(event); // event wird hier ignoriert
  QPainter painter(this); // initialisiere QPainter Object
  QString txt = "DEIN TEXT";
  QFontMetrics metrics = fontMetrics(); // geht NUR in einem QWidget!
  QRect boundingRect = metrics.boundingRect(txt); // ermittle Fläche des Textes
  int flags = Qt::AlignCenter; // zentriere Text
  painter.drawText(contentsRect(), flags, txt, &boundingRect); // zeichne Text
  painter.end(); // Vorgang abschließen
}

Weitere Doku hier: http://doc.trolltech.com/4.5/qpainter.html#drawText-11

LG
Andy
 
Zuletzt bearbeitet:
Hallo,

muss ich dann die Font per pixelGröße verändern? also sagen wir es soll ein "E" von 3,4 zu 8, 9 gezeichnet werden. Dann lasse ich mir bei beliebiger Schriftgröße das boundingRect von "E" geben und skaliere dann die pixelGröße der Schrift sodass es passt oder wie?

LG;
Orbit
 
Das kannst Halten wie Du willst,

die Font-Size bekommst Du ja mit
Code:
QFont fnt = font();
int size = fnt.pixelSize();

im Object heraus - dort kannst Du nötigenfalls mit
Code:
QFont fnt = font();
int size = fnt.pixelSize();
if( size > 12 ) {
  fnt.setPixelSize(12);
  object.setFont(fnt);
}

die Schriftgröße ändern - also die Schriftgröße Deinem Widget anpassen
so daß alles in Dein Rect passt ;)

LG
 
Zurück