目录
Qt设置字体类型及添加字体文件
QT5.9用自定义字体修改qlabel字体、大小以及颜色
设置“用户自定义字体”的简单方法:实测:采用网页html语言方法来修改 字体(font-family)。OK
================================
参考:
Qt GlobalColor 颜色、及其显示
================================
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版权协议,转载请附上原文出处链接及本声明。
QT5.9用自定义字体修改qlabel字体、大小以及颜色
-
修改字体
查阅资料发现这段修改字体代码
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代码进行修改,从而达到这种目的。
-
默认生成:
<!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>
-
蓝色部分是 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
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. 备注:
-
在默认状态,在全部内容编辑完成之后,修改<body style=" font-family:'Noto Sans'; 中的'Noto Sans';会自动在所有的 <p>...</p>之间,加上用户字体的选项,不需要一行一行的改。
-
只是当再次打开时,<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使用自定义字体