C++ Qt:无法加载TTF文件

C++ Qt:无法加载TTF文件,c++,qt,truetype,opensuse,fontconfig,C++,Qt,Truetype,Opensuse,Fontconfig,我有一个在OpenSuse 11.4中开发的Qt嵌入式应用程序,需要在其中加载TTF字体文件。但是,当我调用int QFontDatabase::addApplicationFont()函数时,它将返回-1 阅读文档后,我发现目前不支持在没有fontconfig的Unix/X11平台上添加应用程序字体 我通过YaST检查了我是否安装了fontconfig,它是否已安装——但我认为这与此无关,因为我使用的是一个qt嵌入式库。我想我必须有fontconfig支持qt嵌入式库,但我该怎么做呢 font

我有一个在OpenSuse 11.4中开发的Qt嵌入式应用程序,需要在其中加载TTF字体文件。但是,当我调用
int QFontDatabase::addApplicationFont()
函数时,它将返回
-1

阅读文档后,我发现目前不支持在没有fontconfig的Unix/X11平台上添加应用程序字体

我通过YaST检查了我是否安装了fontconfig,它是否已安装——但我认为这与此无关,因为我使用的是一个qt嵌入式库。我想我必须有fontconfig支持qt嵌入式库,但我该怎么做呢

fontconfig甚至支持qt嵌入式吗?有人能告诉我发生了什么事吗

您可以使用QPA或(以前称为)。您需要创建一个QPlatformIntegration的实现(可以作为插件制作,也可以直接使用),该实现公开了一个定制的QPlatformFontDatabase。这里的诀窍是重用Qt的大部分现有实现QFontconfigDatabase(它与QBasicUnixFontDatabase的子类一样)

这正是我们使用的技术,因此它可以在Linux上工作(不使用X11),同时还可以利用(因此也可以)进行文本呈现


不幸的是,我认为Qt4.5太旧了,无法运行Lighthouse。要么移动到官方支持QPA的4.8版本,要么尝试对Lighthouse进行后置移植。

您能否使用“fc list”命令确认您的字体实际上已由fontconfig列出。如果它不在列表中,该怎么办?下一步是什么?:)在列表中找到合适的字体,或从yast安装字体。您甚至可以将字体路径添加到正在运行的X并使用xrdb重新加载它。所以man xset和man xrdb将告诉yu细节。顺便说一下,我正在使用一个4.5.3 qt嵌入式库构建这个应用程序。而不是预安装在OpenSuse中的QT。如果它不在列表中,则QT无法加载它!QT使用fontconfig数据库加载字体是有明确记录的。我认为使用qt嵌入式没有任何区别。