标题:Qt5.3.2 在arm板上,无法加载第三方特殊字符库
作者:断剑1001
日期:2015-07-31 15:39
内容:
这几天把论坛里liudianwu大神的界面在Qt5.3.2的环境下移植到了am335x上,发现fontawesome这个字库的字符没法显示(http://fontawesome.io/cheatsheet/),但是在ubuntu下是可以的,不知道为什么。这里贴上大神的关键代码,诸位分析分析
一起学习一下
在此感谢liudianwu大神的无私奉献
IconHelper* IconHelper::_instance = 0;
IconHelper::IconHelper(QObject*):
QObject(qApp)
{
//加载字符库
int fontId = QFontDatabase::addApplicationFont(qApp->applicationDirPath() + "/fontawesome-webfont.ttf");
QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
iconFont = QFont(fontName);
}
void IconHelper::SetIcon(QLabel* lab, QChar c, int size)
{
iconFont.setPointSize(size);
lab->setFont(iconFont);
lab->setText(c);
}
void IconHelper::SetIcon(QPushButton* btn, QChar c, int size)
{
iconFont.setPointSize(size);
btn->setFont(iconFont);
btn->setText(c);
}
IconHelper::Instance()->SetIcon(ui->btn, QChar(0xf060));//这里设置btn按钮文本为特殊字符X(对应0xf060)
#1 [一剑飘19881 02-24 10:24]
可以参考深圳扬创科技的Linux嵌入式工业平板,完美支持QT编程,QT版本4.8.5,提供虚拟机系统,无需再搭建环境:https://item.taobao.com/item.htm?id=45130349378
加载字库方法:
#include
#include
#include
#include
#include
#include
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
//将字体文件名传给addApplicationFont,得到字体的Id
// int fontId = QFontDatabase::addApplicationFont("./WenQuanYiMicroHeiMono.ttf");
int fontId = QFontDatabase::addApplicationFont("/lib/WenQuanYiMicroHeiMono.ttf");
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString msyh = QFontDatabase::applicationFontFamilies ( fontId ).at(0);
QFont font(msyh,16);
//将此字体设为QApplication的默认字体
QApplication::setFont(font);
Widget w;
w.show();
return a.exec();
}
QT例程下载地址: