QFontDatabase.addApplicationFont() 返回 -1

QFontDatabase.addApplicationFont() 返回 -1,第1张

一、环境

1)、平台:windows

2)、python3.8、PyQt5/PySide2 5.14.1

二、过程

通过QFontDatabase.addApplicationFont()添加第三方字体库,添加失败。查找原因,无报错信息,只发现方法返回-1;官方文档有提示:

之后就开始各种绕,始终未解决问题。偶然尝试修改路径,解决了问题:

三、demo来自 github上开源项目。

四、结束语

虽然问题解决了,但是为什么加载路由是相对于项目主目录,而不是执行py文件。

目前从事嵌入式系统下的Qt应用程序开发;

程序需要支持中文,需要想qt的字体目录下导入中文字体;

目前导入为微软雅黑字体;当时不知道setfamily的时候需要使用的是什么名称

该如何解决呢?

Qt已经给出了解决方案了;

使用QFontDatabase类;

根据帮助文档:

Detailed Description

The QFontDatabase class provides information about the fonts available in the underlying window system.

具体描述:

QFontDatabase类提供了当前系统下可用的字体的信息;

该类其中一个函数:

QStringList QFontDatabase::families ( WritingSystem writingSystem = Any ) const

Returns a sorted list of the available font families which support the writingSystem.

返回支持writingSystem的所有字体类型

那么就可以使用这个函数了解我们需要的信息;

例如:

[cpp] view plaincopy

QFontDatabase database

foreach (const QString &family, database.families())

{

qDebug()<<family

}

以上这段代码就可以枚举出系统支持的所有字体的名称;

[cpp] view plaincopy

QFontDatabase database

foreach (const QString &family, database.families(QFontDatabase::SimplifiedChinese))

{

qDebug()<<family

}

以上这段代码就可以枚举出系统中所有支持中文的字体名称。

根据打印信息就能知道微软雅黑字体的名称了:

Microsoft YaHei


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12143827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存