Seite 1 von 1

[QT4.0.1] Schriftgrösse dynamisch berechnen

Verfasst: 12. Oktober 2005 17:52
von chronos
Hallo ich hab ein kleines Problem,

ich versuche mich gerade ein bisschen daran eigene Widgets zu zeichnen, einfach um mir mal anzuschaun wie man sowas realisieren kann.

Ich habe eine Tabelle gezeichnet (Ich weiss is schon dabei) und diese Editierbar gemacht.
Jetzt möchte ich das in jedes Feld immer nur zwei Zeichen eingegeben werden können -> funktioniert.

Die Schriftgrösse dieser beiden Zeichen soll immer so berechnet werden das sie genau in die Zelle passen --> kein Chance wie kann ich das realisieren?

Gibt es eine Schriftart in der alle Zeichen die gleichen Ausmaße haben also ein i genausogroß ist / soviel Platz braucht wie ein A ?

MFG Chronos

Re: [QT4.0.1] Schriftgrösse dynamisch berechnen

Verfasst: 12. Oktober 2005 20:21
von klogg
chronos hat geschrieben:Gibt es eine Schriftart in der alle Zeichen die gleichen Ausmaße haben also ein i genausogroß ist / soviel Platz braucht wie ein A ?
Na z.B. CourierNew ist so eine Schriftart.
Nur bei TrueType Schriftarten sind Buchstaben unterschiedlich groß.
Und CourierNew (diese Schreibmaschinenschrift) ist eben keine.

HENNING

Verfasst: 14. Oktober 2005 09:13
von chronos
Danke erstmal für die Schriftart
aber weisst du vielleicht auch eine möglichkeit wie ich die Schriftgrösse automatisch berechnen kann?
Weil die Felder meiner Tabelle passen sich immer der Fenstergrösse an.
Das heisst bei jedem resize Event ändert sich die Höhe und Breite der Zellen.

Ich möchte das die beiden Buchstaben in einer Zelle immer optimal groß sind. D.h. so gross wie möglich sind....

Verfasst: 14. Oktober 2005 10:12
von chronos
Also ich habs jetzt so gelöst

Code: Alles auswählen

    while(1)
    {
    	QFontMetrics fm(font);
    	iFontWidth = fm.width("AA");
        iFontHeigth = fm.height(); 
    	if(iFontWidth >= this->iColWidth || iFontHeigth >= this->iColHeight)
    	{
    		iFontSize-=1;
    		f.setPointSize(iFontSize);
            break;
    	}
    	else
    	{
    	 iFontSize+=1;
    	 f.setPointSize(iFontSize);
    	}
    }