这个问题Add a custom font in Qt和这个link都提到了通过c ++添加字体的能力。这是通过python和Qt Designer框架实现的吗?我试图将ttf添加到资源并编译qrc文件。然后在定义字体的样式表中。
启动应用程序时没有任何反应。还有什么需要做的吗?该示例讨论了加载二进制文件。
答案 0 :(得分:1)
您还需要将其添加到QFontDatabase:
首先将字体文件“yourfont”添加到资源编辑器(您已完成),然后添加到fontdatabase
QFontDatabase fontDatabase;
fontDatabase.addApplicationFont(":/fonts/yourfont");
现在你可以在QLabel上使用你的setfont和你的ft。
答案 1 :(得分:0)
由于在QtDesigner的答案/评论中没有提及,因此在这里和在链接的文章中都没有提及,这就是我发现的关于QtDesigner独立版(5.6)的问题-关于未安装在系统中的字体:
我使用了一种名为AutobusBold.ttf
的免费字体。首先,该文件的路径需要在您的qrc文件中结束,主要是为了使用Python-您可以为此使用资源浏览器/编辑资源(铅笔);您将最终在.qrc文件中得到以下内容:
<file>myfont/AutobusBold.ttf</file>
如果在Windows上使用fontview.exe
打开.ttf文件,则会看到其名称为Autobus Bold
-带空格。
然后,您需要在QtDesigner中关闭.ui文件,然后转到QtDesigner中的“设置/其他字体...”(如果打开了.ui文件,则此选项显示为灰色);在其中单击+(“添加字体文件”),找到.ttf字体文件,然后通过选择它并单击“打开”来添加它。从现在开始,只要在QtDesigner中打开“字体”对话框并与系统字体混合,就会显示该字体。
然后,重新打开您的.ui文件,找到要应用此字体的元素并将其选中,在其styleSheet
选项中,单击三个点,然后在出现的对话框窗口中,单击“添加字体”-会出现“字体”对话框,其中包含所有系统字体-而且自定义字体也会在其中;选择它,您将得到一个.qss节,如下所示:font: 75 8pt "Autobus Bold";
前75个可能是font-weight
,您也可以删除它,其作用相同; 8pt是font-size
,而“ Autobus Bold”是font-family
。注意这里font-family
中的字体名称是带引号的,因为它的名称中有空格-如果没有引号,一切都会失败!
然后,如果您编写一个extern .qss文件,则可以将font:
节改写为单独的font-family
(带有引号的字体名称!)和font-size
节-并且它应该可以工作一样。
当然,如果您想将所有这些都转移到Python,那么您还需要按照@GPPK的答案中的说明另外addApplicationFont
。