Text rotieren mit QPainter

Alles rund um die Programmierung mit Qt
Antworten
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Text rotieren mit QPainter

Beitrag von franzf »

Hallo,

Ich frag mich was ich falsch mach. Eigentlich will ich nur Text rotieren lassen.
Ich verwende das Graphics View Framework. Hab mir eine kleine Test-Klasse von QGraphicsItem abgeleitet. Die Paintroutine sieht folgendermaßen aus:

Code: Alles auswählen

void TestItem::paint( QPainter* p, const QStyleOptionGraphicsItem* option, QWidget* widget )
{
	Q_UNUSED(option);
	Q_UNUSED(widget);

	p->save();

	p->setFont( *_font );

	QPen pen;
	pen.setColor(QColor(255, 0, 0, 127));
	pen.setWidth( 4 );
	p->setPen( pen );

	p->rotate( 23.4 );
	p->drawRect( boundingRect() );
	p->drawText( 0, 0, _string );

	p->restore();
}
Das ganze sieht dann so aus:
Bild
Wieso rotiert der nur die Achse, an der der Text ausgerichtet wird, und nicht jedes Schriftzeichen?
Außerdem ist doch die positive Rotationsrichtung immer gegen den Uhrzeigersinn, hier rotiert er IM Uhrzeigersinn...

Dann stört mich noch das boundingRect():

Code: Alles auswählen

QRectF TestItem::boundingRect() const
{
        // member: QFontMetricsF _fm
	return _fm->boundingRect( _string );
}
Weshalb gibt das ein Rechteck zurück, welches sich nicht am geschriebenen Text orientiert, sondern auch noch die Zeichen berücksichtigt, welche unter die "Hauptlinie" gehen (z.B. das kleine 'g')?

Ich verwende qt-4.2.2 auf ner Gentoo-x86-Kiste. (Falls das jemand wissen will ;))

Besten Dank
Franz
Antworten