Fontgröße bei drawText
Verfasst: 9. November 2011 09:07
Hallo,
das ist mein erster Beitrag auf diesem Forum. Die Nutzung der Suchfunktion hat mich leider nicht weitergebracht.
Seit einigen Monaten beschäftige ich mich mit Entwicklung einer Applikation für ein eingebettetes Linux System. Für grafische Ausgaben nutze ich Qt Embedded in der Version 4.5.3 .
Bisher verlief die Nutzung von Qt nahezu reibungslos. Und alle Probleme konnten durch Lesen von Qt Reference Documentation und Internetrecherchen gelöst werden. Bis jetzt.
Nun bin ich auf ein Problem gestoßen, welches ich nicht lösen kann.
Eigentlich will ich nur einige Textstrings an bestimmter Position, mit bestimmter Größe und in bestimmter Schrift ausgeben. Das Auswählen der gewünschten Schriftart klappt einwandfrei. Aber Position und Größe der Schrift stimmen nicht mit dem überein, was ich eigentlich erwartet hätte.
Als Ergebnis erhalte ich den korrekten Text auf dem Bildschirm. Die Schriftzeichen sind aber deutlich kleiner als eingestellt.
Hier Mein Beispiel:
Ich will Texte in der Schrift Courier New in einer Größe von 20 ausgeben.
In einem Text- oder Bildbearbeitungsprogramm erhalte ich bei diesen Einstellungen Schriftzeichen, die in der Vertikale ca. 30 Pixel belegen.

(Stark vergrößerte Darstellung in einem Bildbearbeitungsprogramm mit Pixelraster)
Wenn ich nun die Texte von Qt auf meinem Gerät in einem Rechteck mit einer Höhe von 30 Pixeln ausgebe, belegen die Schriftzeichen in der Höhe nur ca. 2/3 des Rechtecks.

(Fotoaufnahme der Ausgabe auf dem Bildschirm)
Für die Ausgabe des Strings nutze ich im paintEvent:
Qfont::setPixelSize oder Qfont::setPointSize um die Größe der Schrift festzulegen.
und
QPainter::drawText ( int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0 ) für die Textausgabe.
Kann das Problem irgendwie gelöst werden?
Für Eure hilfreichen Beiträge bin ich dankbar.
das ist mein erster Beitrag auf diesem Forum. Die Nutzung der Suchfunktion hat mich leider nicht weitergebracht.
Seit einigen Monaten beschäftige ich mich mit Entwicklung einer Applikation für ein eingebettetes Linux System. Für grafische Ausgaben nutze ich Qt Embedded in der Version 4.5.3 .
Bisher verlief die Nutzung von Qt nahezu reibungslos. Und alle Probleme konnten durch Lesen von Qt Reference Documentation und Internetrecherchen gelöst werden. Bis jetzt.
Nun bin ich auf ein Problem gestoßen, welches ich nicht lösen kann.
Eigentlich will ich nur einige Textstrings an bestimmter Position, mit bestimmter Größe und in bestimmter Schrift ausgeben. Das Auswählen der gewünschten Schriftart klappt einwandfrei. Aber Position und Größe der Schrift stimmen nicht mit dem überein, was ich eigentlich erwartet hätte.
Als Ergebnis erhalte ich den korrekten Text auf dem Bildschirm. Die Schriftzeichen sind aber deutlich kleiner als eingestellt.
Hier Mein Beispiel:
Ich will Texte in der Schrift Courier New in einer Größe von 20 ausgeben.
In einem Text- oder Bildbearbeitungsprogramm erhalte ich bei diesen Einstellungen Schriftzeichen, die in der Vertikale ca. 30 Pixel belegen.

(Stark vergrößerte Darstellung in einem Bildbearbeitungsprogramm mit Pixelraster)
Wenn ich nun die Texte von Qt auf meinem Gerät in einem Rechteck mit einer Höhe von 30 Pixeln ausgebe, belegen die Schriftzeichen in der Höhe nur ca. 2/3 des Rechtecks.

(Fotoaufnahme der Ausgabe auf dem Bildschirm)
Für die Ausgabe des Strings nutze ich im paintEvent:
Qfont::setPixelSize oder Qfont::setPointSize um die Größe der Schrift festzulegen.
und
QPainter::drawText ( int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0 ) für die Textausgabe.
Code: Alles auswählen
/* Weißes Rechteck: Größe und Position, wie Textbereich unten */
brush.setColor(QColor(0xFFFFFFFF));
painter.setBrush(brush);
painter.drawRect(100, 100, 32, 30);
painter.setBrush(Qt::NoBrush);
/* Text ausgeben */
pen.setColor(0xFF000000);
painter.setPen(pen);
font.setFamily((QFontDatabase::applicationFontFamilies(0).at(0).toLocal8Bit().constData()));
font.setPointSize(20);
//font.setPixelSize(20); //Alternative
painter.setFont(font);
painter.drawText (100, 100, 32, 30, Qt::AlignLeft | Qt::AlignVCenter, txtstring, 0);
Für Eure hilfreichen Beiträge bin ich dankbar.