font().family() を使用して、QWidget のデフォルト フォントのファミリを取得しています。これを QFontDatabase().families() から取得した QStringList と比較します。デフォルトのフォントのファミリは「Sans」ですが、QFontDatabase から取得したリストでは、Sans Serif、Droid Sans、FreeSans などしか見つかりません。QWidget のデフォルト フォントは、システムのフォントにも存在しないものです。 ?
質問する
4054 次
2 に答える
5
これは古典的なトリップアップです。
論理的にQFont
は、フォントのリクエストです。要求されたものと完全に一致しないもので満足する場合があります。実際のフォントは から入手できますQFontInfo
。
考えてみれば、「何でも」を に入れることができますQFont
。QFont
実際に選択されたフォントを示すために、どの時点でそれ自体を変更する必要がありますか? ウィジェットにフォントを設定して読み返すと、そこにあるフォントと一致するように変更された場合、かなり困惑します。したがって、QFont
がモーフィングできるような合理的なポイントQFont
はないので、リクエスト以外にはなり得ません。
を制御QFont
しますが、システムのフォントの可用性やその他の制約によってマッチングが制御されますQFontInfo
。
不変量は次のように表すことができます。
QFontDatabase db;
QFont const font = widget->font();
QStringList const families = db.families();
Q_ASSERT(families.contains(font.family()) || true);
QFontInfo const info(font);
Q_ASSERT(families.contains(info.family()));
于 2013-09-25T20:22:21.637 に答える
0
Sans
家族の別名です。
Droid Sans
フォントファミリ名です。
QFont("Sans") は、ファミリー "Sans" とリクエストに最も近いパラメーター (.boldness、size、lang、script、features など) を持つフォントを返します。
于 2013-09-25T21:46:41.057 に答える