利用资源文件
这种方式不需要进行刚才的step1操作,只需要把字体文件加入当前项目的资源文件中,然后直接导入资源文件,进行字体设置(如何新建资源文件这里不赘述了,百度很多教程)
右击资源文件,选择复制path
在main.cpp中添加代码
//获取自己想要的字体
int fontId = QFontDatabase::addApplicationFont(":/resources/DroidSansFallback.ttf");//自己复制的字体资源路径
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString androidFont = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(androidFont);
QGuiApplication::setFont(font);
虽然成功了,但是还是觉得很麻烦,如果项目中为了美观使用多种字体,在main.cpp中设置就不合理了,需要在具体的地方具体设置,脑补一下,好麻烦。。。
所以继续偷懒
1.新建一个类MyFont
2.在类中写两个方法,用来获取QFont
MyFont.h
#ifndef MYFONT_H
#define MYFONT_H
#include
class MyFont
{
public:
MyFont();
QFont getFont(const QString path);
QFont getFont(const QString path,const int size);
};
#endif // MYFONT_H
MyFont.cpp
QFont MyFont::getFont(const QString path){
//设置DroidSansFallback.ttf字体为程序默认字体,将字体文件打包进apk
int fontId = QFontDatabase::addApplicationFont(path);
if(fontId !=-1){
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString androidFont = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(androidFont);
// m_font = font;
return font;
}
qDebug()<<“the path is ERROR!”;
}
QFont MyFont::getFont(const QString path, const int size){
//设置DroidSansFallback.ttf字体为程序默认字体,将字体文件打包进apk
int fontId = QFontDatabase::addApplicationFont(path);
if(fontId !=-1){
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString androidFont = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(androidFont,size);
// m_font = font;
return font;
}
qDebug()<<“the path is ERROR!”;
}
其实写一个方法
QFont getFont(const QString path);封装代码用来获取字体就够了,但是本人懒癌患者,所以又加了一个QFont getFont(const QString path,const int size);方法,有时候需要设置size的时候就一起设置了,方便-.-
参数path是从qrc资源中copy的字体文件路径。
使用的时候只需要调用一下方法就行
MyFont myfont;
ui->label_1->setText("示按钮是否");
QFont font = myfont.getFont(":/resources/DroidSansFallback.ttf");
font.setPointSize(30);
ui->label_1->setFont(font);
ui->label_1->adjustSize();
QFont font2 = myfont.getFont(":/resources/STXINGKA.TTF",20);
ui->label_2->setFont(font2);
ui->label_2->setText("定的文件加载字");
ui->label_2->adjustSize();