c – 在Linux上构建静态Qt5:如何在部署时处理字体?

c – 在Linux上构建静态Qt5:如何在部署时处理字体?,第1张

概述我已经使用这些配置选项(Ubuntu 12.04)创建了Qt 5.2.0库的静态版本: -opensource -confirm-license -force-pkg-config -release -static -prefix ‘/home/juzzlin/qt5’ -no-icu -opengl desktop -no-glib -accessibility -nomake examples 我已经使用这些配置选项(Ubuntu 12.04)创建了Qt 5.2.0库的静态版本:

-opensource
-confirm-license
-force-pkg-config
-release
-static
-prefix ‘/home/juzzlin/qt5’
-no-icu
-opengl desktop
-no-glib
-accessibility
-nomake examples
-nomake tests
-qt-zlib
-qt-libpng
-qt-libjpeg
-qt-sql-sqlite
-qt-xcb
-qt-pcre
-v

现在,问题是当我编译并链接我的应用程序对这些Qt库时,它尝试从Qt安装路径/ home / juzzlin / qt5 / lib / Fonts加载字体.这应该怎么样?该应用程序适用于我用来编译它的机器,但不适用于其他机器.我也不想将Qt东西安装到应用程序的某些系统目录中,因为应用程序不应该这样做.

这是我得到的错误:

QFontDatabase: Cannot find Font directory /home/juzzlin/qt5/lib/Fonts – is Qt installed correctly?

如何强制它在其他目录中搜索字体?

另一件我不明白的是,为什么我在使用mxe交叉编译Windows时没有遇到同样的问题?它在编译Qt库时使用几乎相同的配置选项.

解决方法 您可以使用Qt资源系统将字体文件嵌入到可执行文件中.

http://qt-project.org/doc/qt-5/resources.html

然后在您的应用程序中,您可以加载嵌入的字体.

QGuiApplication app(argc,argv);qquickview vIEw;// Load the embedded Font.QString FontPath = ":/Fonts/MyFont.ttf";int FontID = QFontDatabase::addApplicationFont(FontPath);if (FontID != -1){    QFont Font("MyFont");    app.setFont(Font);}

我怀疑您的应用程序正在搜索主目录中的字体,因为qmake在编译时硬编码到不同资源的路径.要查看这些路径的值,请运行:

qmake -query

您可以通过包含qt.conf文件来覆盖应用程序中的这些路径,您也可以使用qt资源系统将其嵌入到可执行文件中.

http://qt-project.org/doc/qt-5.0/qtdoc/qt-conf.html

总结

以上是内存溢出为你收集整理的c – 在Linux上构建静态Qt5:如何在部署时处理字体?全部内容,希望文章能够帮你解决c – 在Linux上构建静态Qt5:如何在部署时处理字体?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1236693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存