2009-07-27 4 views
3

OSX上のQtは、デフォルトでは大きすぎるフォントを表示するのはなぜですか?手動で同じフォントサイズを選択した場合でも、フォントが少し大きく表示されます。 OSX上のQtはOSXとは異なるフォントレンダリングを使用していますか? CocoaでQtを使用すると改善されますか?OSX上の大型Qtフォント

さらに、すべてのQtアプリケーションのフォント設定をグローバルに設定するqtconfigツールまたは同等のツールがありますか?

ありがとうございます!

答えて

1

OSXのQtは、あまりにも大きなフォントにデフォルトの が表示されるのはなぜですか?

デフォルトでは、InterfaceBuilderとQt Designerでは同じフォントが使用されています。あなたは同じフォント サイズを選択すると

は手動でもフォントが大きめ に表示されます。

これは私の想像力でしたが、まったく同じです。

OSXでQtを使用すると、別のフォント がOSXにレンダリングされますか?

いいえ、ネイティブレンダリングを使用します。

Qtを ココアに使用すると改善されますか?

フォントは変わることはありません。 CarbonとCocoaの間のフォントレンダリングは一見同じです。

また、すべてのQtアプリケーションのためのqtconfigツール またはグローバルフォントに設定 設定に相当するものはありますか?

OSX用のツール、またはフォント設定をグローバルに設定する方法はありません。

OSXアプリケーションでは、WindowsやLinuxに比べて、多くの点で多少低い点フォントを使用する傾向があるということが根本だと思われます。その結果、Qt OSXアプリケーションで使用されるフォントサイズは、プラットフォーム上の他の場所での使用に合わせて手作業で微調整する必要があります。

+2

あなたはQtの:: MacSmallSizeとQtを設定することができます:: MacMiniSizeウィジェットはに属性それらを標準的なMacのサイズを小さくします。 – mxcl

+4

まだ、質問をしないでください。 「Qtポートを通過する」のには、多くの理由があります。 QtアプリケーションがWindows上で利用可能で、Mac上で同等のものを持っていない場合があり、新しいフロントエンドを最初から実装する時間がないことがあります。 Qtアプリケーションを調整するということは、これらのアプリケーションがWindows専用ではなくMacに実際に向かうことを意味します。 –

2

Max Howellは正しいです。ネイティブOS Xアプリケーションでは、ウィンドウやウィジェットに小さくて小さなサイズを設定するオプションがあります。次に、より小さなフォントを選択し、グラフィック要素の一部のサイズを変更します。

多くのOS Xデザイナーがこれを利用しているため、この規約に従わないアプリケーションはOS Xで大きく見える可能性が非常に高いです。残念ながら、多くの人々がそれらについて知っているし、彼らがしなければ、それらを実装していないと思われるビットである - Qt::WA_MacNormalSizeは、Qt::WA_MacSmallSizeは、Qt::WA_MacMiniSizeQt::WA_MacVariableSizeは:

指摘されているように、Qtはこれを変更することができwidget attributesを提供していこれはコードがかなりの数の#ifdefを持つことを必要とするからです(努力を軽減するためにヘルパー関数を使用していない限り)。

特に悪いQtがあるため、このような大規模な行の高さが小さいモニターでそれはほとんど役に立たない可能プロパティテーブルとして特にウィジェットでは、またはのQt Designerのどちらか自分ののQt Creatorでこれらの属性を使用していないということですあなたが探していたプロパティを見つけるために永遠にスクロールする必要があります。 Qt::WA_MacNormalSizeQt::WA_MacSmallSizeQt::WA_MacMiniSizeQt::WA_MacVariableSize

0

がAS他の回答で説明した、あなたはwidget attributesを設定することができます。

アプリケーション全体に対してこれを行う最も簡単な方法は、QProxyStyleを使用し、QProxyStyle::polishメソッドでは、必要に応じて属性を設定することです。

私は通常、QMenuウィジェットのフラグをキーボードショートカットの表示を壊すので変更しないようにします。

したがって、たとえば、メニューと私は大残ることを選択したものを除き、すべてのウィジェットを小さくすることが、私は:

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 
} 
関連する問題