3 Stimmen

Übergroße Qt-Schriften unter OSX

Warum scheint Qt unter OSX standardmäßig übermäßig große Schriftarten zu verwenden? Selbst wenn Sie die gleiche Schriftgröße manuell auswählen, erscheinen die Schriften etwas größer. Verwendet Qt unter OSX ein anderes Font-Rendering als OSX? Verbessert sich dies, wenn Sie Qt für Cocoa verwenden?

Gibt es darüber hinaus ein qtconfig-Tool oder ein gleichwertiges Werkzeug, um die Schrifteinstellungen für alle Qt-Anwendungen global zu setzen?

Danke!

2voto

Debilski Punkte 65106

Max Howell hat Recht. In nativen OS X-Anwendungen haben Sie die Möglichkeit, kleine und kleinste Größen für Ihre Fenster und Widgets einzustellen. Diese wählen dann kleinere Schriftarten und ändern auch die Größe einiger grafischer Elemente.

Viele OS X-Designer machen davon Gebrauch, so dass eine Anwendung, die sich nicht an diese Konventionen hält, unter OS X sehr wahrscheinlich überdimensioniert aussehen wird.

Wie bereits erwähnt, bietet Qt Widget-Attribute die dies ändern können: Qt::WA_MacNormalSize , Qt::WA_MacSmallSize , Qt::WA_MacMiniSize , Qt::WA_MacVariableSize - aber leider scheint es so zu sein, dass viele Leute sie nicht kennen, und wenn sie sie kennen, ist es ein bisschen schwierig, sie zu implementieren, da der Code eine ganze Reihe von #ifdef s (es sei denn, sie verwenden dafür eine Hilfsfunktion, um den Aufwand zu verringern).

Besonders schlimm ist, dass Qt diese Attribute nicht in seinen eigenen Qt Schöpfer o Qt-Designer auch nicht, vor allem in Widgets wie den Eigenschaftstabellen, wo die große Zeilenhöhe sie auf kleineren Monitoren fast nutzlos macht, weil man ewig scrollen muss, um die gesuchte Eigenschaft zu finden.

1voto

Mike McQuaid Punkte 9326

Warum scheint Qt unter OSX standardmäßig übermäßig große Schriftarten zu verwenden?

Standardmäßig werden in InterfaceBuilder und Qt Designer die gleichen Schriftarten verwendet.

Auch wenn Sie die gleiche Schriftgröße Schriftgröße manuell auswählen, erscheint die Schrift etwas größer.

Es hat sich herausgestellt, dass ich mir das nur eingebildet habe, sie sind genau gleich.

Benutzt Qt unter OSX eine andere Schriftart Rendering als OSX?

Nein, es wird das native Rendering verwendet.

Verbessert sich dies, wenn Sie Qt für Kakao?

Die Schriftarten ändern sich nicht, aber andere Dinge schon. Die Schriftart Rendering zwischen Carbon und Cocoa ist scheinbar identisch.

Gibt es darüber hinaus ein qtconfig-Tool oder ein Äquivalent, um global die Schriftart Einstellungen für alle Qt-Anwendungen zu setzen?

Es gibt keine qtconfig Tool für OSX oder irgendeine Möglichkeit, die Schrifteinstellungen global zu setzen.

Die Ursache für die oben genannten Probleme scheint darin zu liegen, dass OSX-Anwendungen dazu neigen, im Vergleich zu Windows oder Linux für viele Dinge etwas niedrigere Punktschriften zu verwenden. Daher sollten die Schriftgrößen, die in einer Qt OSX-Anwendung verwendet werden, von Hand angepasst werden, damit sie besser zu denen passen, die sonst auf der Plattform verwendet werden.

0voto

mkrus Punkte 815

Wie in anderen Antworten erläutert, können Sie die Widget-Attribute : Qt::WA_MacNormalSize , Qt::WA_MacSmallSize , Qt::WA_MacMiniSize , Qt::WA_MacVariableSize .

Der einfachste Weg, den ich gefunden habe, um dies für Ihre gesamte Anwendung zu tun, ist die Verwendung einer QProxyStyle und in der QProxyStyle::polish Methode das Attribut wie gewünscht einstellen.

Ich stelle normalerweise sicher, dass ich die Flaggen in QMenu-Widgets NICHT ändere, da dies die Anzeige der Tastaturkürzel unterbricht.

So mache ich zum Beispiel alle Widgets klein, mit Ausnahme der Menüs und derjenigen, die ich für groß halte:

void QMveStyle::polish ( QWidget * w )
{
#ifdef __APPLE__
    QMenu* mn = dynamic_cast<QMenu*>(w);
    if(!mn && !w->testAttribute(Qt::WA_MacNormalSize))
        w->setAttribute(Qt::WA_MacSmallSize);
#endif
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X