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

我已经使用这些configuration选项(Ubuntu 12.04)创build了静态版本的Qt 5.2.0库:

-opensource -confirm-license -force-pkg-config -release -static -prefix'/ home / juzzlin / qt5'-no-icu -opengl桌面-no-glib -accessibility -nomake示例-nomaketesting-qt-zlib – qt-libpng -qt-libjpeg -qt-sql-sqlite -qt-xcb -qt-pcre -v

现在,问题是,当我编译和链接我的应用程序对这些Qt库时,它会尝试从Qt安装path/home/juzzlin/qt5/lib/fonts 。 这应该如何工作? 该应用程序在我用来编译它的机器上工作,但不在其他机器上。 我也不想安装Qt的东西到应用程序的一些系统目录,因为应用程序不应该这样做。

这是我得到的错误:

QFontDatabase:找不到字体目录/ home / juzzlin / qt5 / lib / fonts – Qt安装是否正确?

我如何强制它在其他目录中search字体?

另一件我不明白的是,为什么我在用MXE交叉编译Windows时没有这个问题? 在编译Qt库时,它使用几乎相同的configuration选项。

Solutions Collecting From Web of "在Linux上构build静态Qt5:如何在部署时处理字体?"

您可以使用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