【问题标题】:Check if QFont is Serif or Sans-Serif检查 QFont 是 Serif 还是 Sans-Serif
【发布时间】:2012-11-14 06:01:17
【问题描述】:

我有一个用户选择的 QFont:

QFont font = QFontDialog::getFont(&ok, prevFont, this);

我怎么知道它是否是衬线字体?

【问题讨论】:

  • 你检查QFont属性了吗?
  • 我使用哪个函数来做到这一点? Sans Serif 仅与styleHint 属性一起被提及,但其中包含字体匹配算法的提示。但是,我的字体已经被选中了。
  • 您是否需要它适用于所有平台,或者特定平台(Windows、Mac、Linux)?我不认为你可以直接从 Qt 获取这些信息,但可能有一种不可移植的方式,比如从 Windows 上的 HFONT 句柄获取 LOGFONT 结构。
  • 我只需要在 Windows 上工作。
  • 测试表明通过QFont 本身或通过QFontInfo 查询styleHint 不起作用。样式提示仅用于传出字体匹配,不会反映加载的实际系统字体的属性。 Qt 将它们用作确定最佳候选字体的指南。我可能是错的,但我怀疑字体文件中是否存在任何固有的衬线指示符,而不是字体名称中出现的文本。

标签: c++ qt fonts


【解决方案1】:

这行得通吗?

bool isSansSerrif = (font.styleHint() & QFont::SansSerif);
bool isSerrif = (font.styleHint() & QFont::Serif);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2021-04-09
    • 2011-02-09
    相关资源
    最近更新 更多