Herausfinden wieviel Platz ein Text einnimmt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Kurz zum Hintergrund: Mit einer noch festzulegenden Tastenkombination will ich den Fensterinhalt gräulich einfärben und in der Mitte des Fensters ein QLineEdit erscheinen lassen, welches dann als einziges Element aktiv ist. Man muss sich das in etwa wie die Werbung oder Anzeige von Fotos auf manchen Webseiten vorstellen.

Das Textfeld hat gemessen am Fenster eine relativ kleine Anfangsgröße, so dass gerade mal ein paar Zeichen in Schriftgröße 16 hineinpassen. Sobald der Text nicht mehr komplett sichtbar ist, soll das Feld dynamisch mitwachsen. Der Sinn dahinter ist lediglich optischer Natur. Eventuell sieht's am Ende scheiße aus, aber ich will es mal probieren.

Meine Frage ist also: Wie komme ich an eine Pixelangabe dieser Größe, damit ich ausrechnen kann, wann der Platz im Feld überschritten wurde? Ich habe da leider keine Funktion zu gefunden, die das für einen übernehmen würde. Ist ja auch ein etwas exotisches Anliegen. ;)
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich denke, ich hab's: Man muss ein QFont-Objekt mit der entsprechenden Schriftart und weiteren Attributen erstellen und dieses an QFontMetrics übergeben. Dann kann man dessen width()-Methode nutzen, die einen String annimmt und die sich ergebende Breite für einen ausrechnet. Ich denke, das bekomme ich hin.

EDIT: Es ist sogar noch ein bißchen einfacher:
QFontMetrics QWidget::fontMetrics () const

Returns the font metrics for the widget's current font. Equivalent to QFontMetrics(widget->font()).
Antworten