• 4104阅读
  • 1回复

[讨论]Qt5.3.2 在arm板上,无法加载第三方特殊字符库 [复制链接]

上一主题 下一主题
离线断剑1001
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-31
这几天把论坛里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)

本帖提到的人: @liudianwu

只看该作者 1楼 发表于: 2016-02-24
可以参考深圳扬创科技的Linux嵌入式工业平板,完美支持QT编程,QT版本4.8.5,提供虚拟机系统,无需再搭建环境:https://item.taobao.com/item.htm?id=45130349378
加载字库方法:

#include <QtGui/QApplication>
#include <QtGui/QFontDatabase>
#include <QtGui/QMessageBox>
#include <QTextCodec>
#include <QTextCodec>
#include <QtGui>
#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例程下载地址: HelloQt.rar (30 K) 下载次数:1
快速回复
限100 字节
 
上一个 下一个