Qt5 自定义字体修改: 字体、大小以及颜色(部分要点已实测)

目录

Qt设置字体类型及添加字体文件

QT5.9用自定义字体修改qlabel字体、大小以及颜色

设置“用户自定义字体”的简单方法:实测:采用网页html语言方法来修改 字体(font-family)。OK

================================

参考:

Qt GlobalColor 颜色、及其显示

Qt GlobalColor 颜色、及其显示-CSDN博客

================================

Qt设置字体类型及添加字体文件

Qt 添加字体文件

1.设置支持的字体

QFont font;
font.setFamily("填写字体名称");
2.通过字体文件来设置字体

字体的名称可以是自带的,也可以是外部的如果是外部字体文件,则需要获取字体名称,使用QFontDatabase类

  • 从字体文件的路径加载字体 ,如果返回值为-1,则加载失败 ;

  • 获取字体的名称


int fontId = QFontDatabase::addApplicationFont(fontPath);
if (fontId == -1) {
qDebug("load font failed!");
}
QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);//获取字体名称
if (fontName == nullptr) {
}
  • 返回的fontName就是字体的名称,再通过setFamily()即可设置字体类型。

备 : QString和QStringList常用方法(后续补充)


.at(0)
.split("#")

————————————————

版权声明:本文为CSDN博主「yikepangdaxing_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:Qt设置字体类型及添加字体文件-CSDN博客

QT5.9用自定义字体修改qlabel字体、大小以及颜色

  1. 修改字体

查阅资料发现这段修改字体代码


    int font_Id = QFontDatabase::addApplicationFont(":/test.ttf");  //":/冒号表示资源根目录
    QStringList font_list = QFontDatabase::applicationFontFamilies(font_Id);
    qDebug()<<font_Id;
    qDebug()<<font_list;
    if(!font_list.isEmpty())
    {
        QFont f;
        f.setFamily(font_list[0]);
        a.setFont(f);  //a 为用户需要修改的地方,比如 lineEdit
    }

但是我在ui->setupUi(this);后添加 此段代码后发现并不能实现修改字体。经过多方探索,终于发现需要重新设置文字,增加此段代码

ui->label->setText("text");

重新设置文字后字体发生改变。

2、修改字体大小

f.setPixelSize(x);

3、修改字体颜色

发现qlabel不能通过设置color去改变字体颜色,经过查阅资料,直接通过设置样式表可以改变字体颜色。

ui->label->setStyleSheet("color:#FEFEFE;");

————————————————

版权声明:本文为CSDN博主「我去啊sb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:QT5.9用自定义字体修改qlabel字体、大小以及颜色-CSDN博客

================》》》》》》

注意:

  • 在ui->setupUi(this);之前添加,则有可能窗口还没有实例化,因而不能设置;要看具体代码的实现方式。

  • 在这篇转载的文章中所给出的解决方案,设置少量文字可行。

  • 最佳的解决方法,可能是:在 Qt设计师界面,将编辑转到 “source”标签,然后,直接修改自动生成的 html编码,并另外保存为外部的独立 html文件,然后,再调入。(直接修改无法保存)。

或许采用某种刷新方法也可以,但是,没有实验。

=---------------

设置“用户自定义字体”的简单方法:

实测:采用网页html语言方法来修改 字体(font-family)。OK

Qt5 的富文本编辑器(Rich Text/多文本)窗口,无法设置非操作系统默认路径下的“用户自定义字体”;但可以“source/源”窗口中,对自动生成的html代码进行修改,从而达到这种目的。

  1. 默认生成:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

<html><head>

<meta name="qrichtext" content="1" />

<style type="text/css">p, li { white-space: pre-wrap; }</style></head>

<body style=" font-family:'Noto Sans'; font-size:11pt; font-weight:400; font-style:normal;">

<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">test--test--test</p></body></html>


  1. 蓝色部分是 Qt默认生成的html代码,无法修改:非操作系统默认路径下的“用户自定义字体”。或者说 将修改保存之后,再次打开会和修改之前是一样的。

使用Qt 5默认的内嵌编辑器法,只能采用修改 <span >...</span>之间(含)的部分来使用自定义字体。

##   ** 只能修改红色部分,才是有效的。也就是 在用户修改字体并保存之后,再次打开仍然有效。**

<body style=" font-family:'Noto Sans'; font-size:11pt; font-weight:400; font-style:normal;">

<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'User_Font'; font-size:9pt;">test--test--test 用户字体</span></p></body></html>


<body style=" font-family:'Noto Sans'; font-size:11pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">
     
<span style=" font-family:'User_Font'; font-size:9pt;">
test--test--test 用户字体
</span>
     
</p>
</body>
</html>

在源窗口中,采用简单的HTML的全称为超文本标记语言来进行编辑,即可。

//简单的字体修改方法:
1. 在“多文本”窗口,进行文字内容输入,以及自带的其他编辑设置。操作系统默认路径字库。
2. 然后,切换到“源”窗口,进行文字内容输入,以及“用户自定义字体”修改。操作系统默认路径字库。
3. 自定义字库文件名,以及字库文件的路径:则还有增加引入字库的代码,见本文的其他部分。用户自定义Qt路径字库。可参考:相关的 html语言的设置方法。

使用设计网页专用的“ html语言”,可以实现:

一行: 

<p><span style=" font-family:'User_Font'>...</span></p>;

或者整个页都使用自定义字体,使用:

<body><span style=" font-family:'User_Font'>...</span></body>; //注意保存前后的区别

保存前:手动输入,只有1对<span>...</span>。(注意代码的位置在<body>后,及</body>前)

保存后:被 Qt Creator自动修改为,每对<p>...</p>之内,都包含有1对<span>...</span>

字库文件结构及内容的处理:

自定义字库中,未使用的字形单元的处理,去除后,没有的字形单元,会被操作系统默认字库中的相应字形所自动替代。

参考:开源跨平台字库编辑处理软件:

Download FontForge

Download FontForge

FontForge releases are available for Windows, Mac and GNU+Linux. Developer builds are available.

Uninstalling: How to uninstall FontForge

We also provide the source code under a libre license

3. 备注:
  1. 在默认状态,在全部内容编辑完成之后,修改<body style=" font-family:'Noto Sans'; 中的'Noto Sans';会自动在所有的 <p>...</p>之间,加上用户字体的选项,不需要一行一行的改。

  1. 只是当再次打开时,<body style=" font-family: 会恢复回到原来的 'Noto Sans';状态。

《《《《《《=====================

但是我在ui->setupUi(this);后添加 此段代码后发现并不能实现修改字体。经过多方探索,终于发现需要重新设置文字,增加此段代码


ui->label->setText("text");

重新设置文字后字体发生改变。

2、修改字体大小


f.setPixelSize(x);

3、修改字体颜色

发现qlabel不能通过设置color去改变字体颜色,经过查阅资料,直接通过设置样式表可以改变字体颜色。


ui->label->setStyleSheet("color:#FEFEFE;"); // 代码简单

————————————————

版权声明:本文为CSDN博主「我去啊sb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:QT5.9用自定义字体修改qlabel字体、大小以及颜色_qlabel设置字体颜色大小-CSDN博客

QFont的几个例子


QPushButton a = new QPushButton(tr("abcdefg"));
a->setFont(QFont("Times",16, QFont::Bold));
a->setFont(QFont(("Arial"), 18, QFont::Bold))

参考:

Qt笔记(五十九)之Qt使用自定义字体

Qt笔记(五十九)之Qt使用自定义字体_qt 使用ttf-CSDN博客

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值