gpt4 book ai didi

c++ - QFontDatabase 不包含所有字体系列或它有不同的名称

转载 作者:太空狗 更新时间:2023-10-29 20:42:21 25 4
gpt4 key购买 nike

我正在使用 font().family() 获取 QWidget 的默认字体系列。我将其与从 QFontDatabase().families() 获得的 QStringList 进行比较。默认字体系列是“Sans”,但我无法在从 QFontDatabase 获得的列表中找到它,我只能找到 Sans Serif、Droid Sans、FreeSans 等。QWidget 的默认字体为何甚至不存在于系统字体中?

最佳答案

这是一个经典的错误。

从逻辑上讲,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()));

关于c++ - QFontDatabase 不包含所有字体系列或它有不同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com