如何在我的应用程序中嵌入自定义字体
How to embed a custom font in my application
我想在我的应用程序中添加自定义字体,并且我已经添加到我的资源文件中。
我的代码如下:
int id = QFontDatabase::addApplicationFont(":/fonts/ae_AlMateen.ttf");
QMessageBox::information(this,"Message",QString::number(id));
还有.qrc
文件的内容。
<RCC>
<qresource prefix="/fonts">
<file alias="ae_AlMateen">ae_AlMateen.ttf</file>
</qresource>
</RCC>
但问题是 addApplicationFont
总是 returns -1
。
请注意, 当将 :/fonts/ae_AlMateen.ttf
更改为直接路径 ex:C://ae_AlMateen.ttf
时,它工作正常。
我希望字体文件与我的应用程序可执行文件集成,以使应用程序不需要附加字体文件。
如果您也在使用 qml,您可以在 qml 文件中加载字体 in this way。我推荐。
如果您还想从 cpp 文件加载字体,请阅读 this article,它可能对您有所帮助。
编辑:
以下代码可以在 OSX10.10 上的 Qt5.4.1 上运行。 (字体内嵌在可执行文件中)
int id = QFontDatabase::addApplicationFont(":/fonts/fontawesome-webfont.ttf");
QMessageBox::information(NULL,"Message",QString::number(id)); // this shows id is 0.
QFont font;
font.setFamily("FontAwesome");
font.setPointSize(30);
ui->commandLinkButton->setFont(font);
ui->commandLinkButton->setText("\uf021"); // this shows the Refresh icon.
编辑2:
我用 Qt5.4.1(msvc2013 64bit) 在 Win7 上做了另一个测试。字体嵌入在 exe 文件中。一切正常。
啊...现在,在您添加 .qrc 后,我明白了。易于解释:
<file alias="ae_AlMateen">ae_AlMateen.ttf</file>
您在 .qrc 文件中添加了别名。如果您删除 alias="ae_AlMateen" 它将像我们所有人预期的那样工作...扩展名为 .ttf。
我想在我的应用程序中添加自定义字体,并且我已经添加到我的资源文件中。
我的代码如下:
int id = QFontDatabase::addApplicationFont(":/fonts/ae_AlMateen.ttf");
QMessageBox::information(this,"Message",QString::number(id));
还有.qrc
文件的内容。
<RCC>
<qresource prefix="/fonts">
<file alias="ae_AlMateen">ae_AlMateen.ttf</file>
</qresource>
</RCC>
但问题是 addApplicationFont
总是 returns -1
。
请注意, 当将 :/fonts/ae_AlMateen.ttf
更改为直接路径 ex:C://ae_AlMateen.ttf
时,它工作正常。
我希望字体文件与我的应用程序可执行文件集成,以使应用程序不需要附加字体文件。
如果您也在使用 qml,您可以在 qml 文件中加载字体 in this way。我推荐。
如果您还想从 cpp 文件加载字体,请阅读 this article,它可能对您有所帮助。
编辑: 以下代码可以在 OSX10.10 上的 Qt5.4.1 上运行。 (字体内嵌在可执行文件中)
int id = QFontDatabase::addApplicationFont(":/fonts/fontawesome-webfont.ttf");
QMessageBox::information(NULL,"Message",QString::number(id)); // this shows id is 0.
QFont font;
font.setFamily("FontAwesome");
font.setPointSize(30);
ui->commandLinkButton->setFont(font);
ui->commandLinkButton->setText("\uf021"); // this shows the Refresh icon.
编辑2: 我用 Qt5.4.1(msvc2013 64bit) 在 Win7 上做了另一个测试。字体嵌入在 exe 文件中。一切正常。
啊...现在,在您添加 .qrc 后,我明白了。易于解释:
<file alias="ae_AlMateen">ae_AlMateen.ttf</file>
您在 .qrc 文件中添加了别名。如果您删除 alias="ae_AlMateen" 它将像我们所有人预期的那样工作...扩展名为 .ttf。