簡體   English   中英

在Linux上構建靜態Qt5:如何在部署時處理字體?

[英]Static Qt5 build on Linux: how to handle fonts when deploying?

我已經使用這些配置選項(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:找不到字體目錄/ home / juzzlin / qt5 / lib / fonts - 是否正確安裝了Qt?

如何強制它在其他目錄中搜索字體?

另一件我不明白的是,為什么我在使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM