3

font().family() を使用して、QWidget のデフォルト フォントのファミリを取得しています。これを QFontDatabase().families() から取得した QStringList と比較します。デフォルトのフォントのファミリは「Sans」ですが、QFontDatabase から取得したリストでは、Sans Serif、Droid Sans、FreeSans などしか見つかりません。QWidget のデフォルト フォントは、システムのフォントにも存在しないものです。 ?

4

2 に答える 2

5

これは古典的なトリップアップです。

論理的にQFontは、フォントのリクエストです。要求されたものと完全に一致しないもので満足する場合があります。実際のフォントは から入手できますQFontInfo

考えてみれば、「何でも」を に入れることができますQFontQFont実際に選択されたフォントを示すために、どの時点でそれ自体を変更する必要がありますか? ウィジェットにフォントを設定して読み返すと、そこにあるフォントと一致するように変更された場合、かなり困惑します。したがって、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 に答える