当前位置: 首页 > news >正文

交通建设监理协会网站广告联盟接广告

交通建设监理协会网站,广告联盟接广告,第六感聊城网站建设,北京华兴森茂印刷网站建设项目最近在做项目时,遇到需要显示一些特殊字符的需求,这些特殊字符无法从键盘敲出来,于是乎,发现可以从字体库文件ttf中读取显示。 参考博客:QT 图标字体类IconHelper封装支持Font Awesome 5-CSDN博客 该博客封装的很不错…

最近在做项目时,遇到需要显示一些特殊字符的需求,这些特殊字符无法从键盘敲出来,于是乎,发现可以从字体库文件ttf中读取显示。

参考博客:QT 图标字体类IconHelper封装支持Font Awesome 5-CSDN博客

该博客封装的很不错,值得一看!

一、下载ttf文件

Font Awesome,一套绝佳的图标字体库和CSS框架

解压出来后,通过如下网站可以在线查看键值对照关系

Iconfont Previewiconfont preview for web, Momo's Blog, LuckyMomoicon-default.png?t=O83Ahttps://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html很好玩的一个网站!

就可以看到该字体库解析出来的很多图标了。

这里请看图片中红色圆圈全中的 bug 图标,如果需要读取他,那么请记住他的编码:&#xf188

注意,在代码中,我们用的是16进制方式,即:0xf188

在windows环境,右键字体,选择预览,即可看到字体名称

字体名称 字体文件名 是必须要知道的!

二、编码

1.初始化字体后,就可以使用这个字体了

QFontDatabase::addApplicationFont("字体文件名");    // fontawesome-webfont.ttf
QFont iconFont = QFont("字体名称");    // FontAwesome

2.从字体库中获取图标,返回QPixmap

QPixmap IconHelper::getPixmap(const QColor &color, const QChar &str,quint32 size, quint32 pixWidth, quint32 pixHeight, int flags)
{QPixmap pix(pixWidth, pixHeight);pix.fill(Qt::transparent);QPainter painter;painter.begin(&pix);painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);painter.setPen(color);iconFont.setPixelSize(size);painter.setFont(iconFont);painter.drawText(pix.rect(), flags, str);painter.end();return pix;
}

如果想要QImage,或者需要将图标保存为本地图片,则将QPixmap转为QImage后再保存本地即可。

IconHelper iconHelper("FontAwesome", "fontawesome-webfont.ttf");
QPixmap pixmap = iconHelper.getPixmap(QColor(0, 0, 0), QChar(0xf188), 300, 300, 300);
QImage iamge = pixmap.toImage();     // 转为 QImage
iamge.save("文件路径/文件名字.png");    // 保存为本地图片 

3.可以直接给部件设置背景图

void IconHelper::setIcon(QLabel *lab, const QChar &str, quint32 size)
{iconFont.setPixelSize(size);lab->setFont(iconFont);lab->setText(str);
}

4.测试1,给按钮设置背景图标为篮球,图标编码为 0xf17d

int size = 100;                                                             
int width = 100;                                                            
int height = 100;  IconHelper iconHelper("FontAwesome", "fontawesome-webfont.ttf");            
QWidget *w = new QWidget;                                                   
w->setFixedSize(width*3, height*3); QPushButton *btn = new QPushButton(w);                                      
btn->setFixedSize(width, height);   iconHelper.setIcon(btn, QChar(0xf17d), size);  QHBoxLayout *hLayout = new QHBoxLayout(w);                                  
hLayout->addWidget(btn);                                                    
w->setLayout(hLayout);    w->show();                                                                  

5.测试2,给QLabel设置背景图标为虫子,图标编码为 0xf188

int size = 300;                                                                           
int width = 300;                                                                          
int height = 300;    IconHelper iconHelper("FontAwesome", "fontawesome-webfont.ttf");                          
QPixmap p = iconHelper.getPixmap(QColor(0, 0, 0), QChar(0xf188), size, width, height);    QWidget *w = new QWidget;                                                                 
w->setFixedSize(p.size()); QLabel label(w);                                                                          
label.setFixedSize(p.size());                                                             
label.setPixmap(p);  QHBoxLayout *hLayout = new QHBoxLayout(w);                                                
hLayout->addWidget(&label);                                                               
w->setLayout(hLayout);  w->show();                                                                                

三、代码汇总

iconhelper.h

#ifndef ICONHELPER_H
#define ICONHELPER_H#include <QtCore>
#include <QtGui>
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))#include <QtWidgets>
#endif//图形字体处理类
class IconHelper : public QObject
{Q_OBJECTpublic:explicit IconHelper(QString fontName, QString fontFileName, QObject *parent = nullptr);~IconHelper() override;void setIcon(QLabel *lab, const QChar &str, quint32 size = 12);void setIcon(QPushButton *btn, const QChar &str, quint32 size = 12);QPixmap getPixmap(const QColor &color, const QChar &str, quint32 size = 12,quint32 pixWidth = 15, quint32 pixHeight = 15, int flags = Qt::AlignCenter);private:QFont iconFont;             // 图形字体
};
#endif // ICONHELPER_H

iconhelper.cpp

#include "iconhelper.h"IconHelper::IconHelper(QString fontName, QString fontFileName, QObject *parent) : QObject(parent)
{// 判断图形字体是否存在,不存在则加入QFontDatabase fontDb;if (!fontDb.families().contains(fontName)) {// 从资源文件中读取ttf文件int fontId = QFontDatabase::addApplicationFont(QString(":/image/%1").arg(fontFileName));QStringList fontName = QFontDatabase::applicationFontFamilies(fontId);if (0 == fontName.count()) {qDebug() << QString("load fontFileName error").arg(fontFileName);}}if (fontDb.families().contains(fontName)) {iconFont = QFont(fontName);
#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0))iconFont.setHintingPreference(QFont::PreferNoHinting);
#endif} else {    // 容错处理,如果字体加载失败,则使用默认字体QFont f;iconFont = f;}
}IconHelper::~IconHelper()
{}void IconHelper::setIcon(QLabel *lab, const QChar &str, quint32 size)
{iconFont.setPixelSize(size);lab->setFont(iconFont);lab->setText(str);
}void IconHelper::setIcon(QPushButton *btn, const QChar &str, quint32 size)
{iconFont.setPixelSize(size);btn->setFont(iconFont);btn->setText(str);
}QPixmap IconHelper::getPixmap(const QColor &color, const QChar &str,quint32 size, quint32 pixWidth, quint32 pixHeight, int flags)
{QPixmap pix(pixWidth, pixHeight);pix.fill(Qt::transparent);QPainter painter;painter.begin(&pix);painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);painter.setPen(color);iconFont.setPixelSize(size);painter.setFont(iconFont);painter.drawText(pix.rect(), flags, str);painter.end();return pix;
}

当根据大小获取到图标QPixmap后,就可以根据具体需要添加到相应的部件进行显示了!

完!


文章转载自:
http://wyomingite.hwLk.cn
http://filially.hwLk.cn
http://sheepshearer.hwLk.cn
http://labradorite.hwLk.cn
http://argon.hwLk.cn
http://resound.hwLk.cn
http://insulation.hwLk.cn
http://hiroshima.hwLk.cn
http://chiseler.hwLk.cn
http://fraternize.hwLk.cn
http://conchy.hwLk.cn
http://narcomania.hwLk.cn
http://barrable.hwLk.cn
http://harken.hwLk.cn
http://semibarbarism.hwLk.cn
http://primly.hwLk.cn
http://cowberry.hwLk.cn
http://fl.hwLk.cn
http://witness.hwLk.cn
http://senate.hwLk.cn
http://adoptability.hwLk.cn
http://hlbb.hwLk.cn
http://ponytail.hwLk.cn
http://meatpacking.hwLk.cn
http://trounce.hwLk.cn
http://hohokam.hwLk.cn
http://headlike.hwLk.cn
http://phytochemical.hwLk.cn
http://resubject.hwLk.cn
http://enterozoan.hwLk.cn
http://androstane.hwLk.cn
http://coterminal.hwLk.cn
http://chute.hwLk.cn
http://fiendishly.hwLk.cn
http://yearningly.hwLk.cn
http://tiled.hwLk.cn
http://rateable.hwLk.cn
http://grandisonian.hwLk.cn
http://mandeville.hwLk.cn
http://scunge.hwLk.cn
http://transmutative.hwLk.cn
http://fenestrated.hwLk.cn
http://kamasutra.hwLk.cn
http://capillary.hwLk.cn
http://atone.hwLk.cn
http://sphygmograph.hwLk.cn
http://wingspread.hwLk.cn
http://melchior.hwLk.cn
http://hotelkeeper.hwLk.cn
http://cockade.hwLk.cn
http://shakhty.hwLk.cn
http://fistulous.hwLk.cn
http://interdependent.hwLk.cn
http://jag.hwLk.cn
http://betake.hwLk.cn
http://lgm.hwLk.cn
http://azonic.hwLk.cn
http://indecency.hwLk.cn
http://underwritten.hwLk.cn
http://polystome.hwLk.cn
http://benthograph.hwLk.cn
http://phlegmatized.hwLk.cn
http://zechin.hwLk.cn
http://tokamak.hwLk.cn
http://cytoplasmic.hwLk.cn
http://chelsea.hwLk.cn
http://begot.hwLk.cn
http://chlorocarbon.hwLk.cn
http://rejuvenescent.hwLk.cn
http://wilson.hwLk.cn
http://amercement.hwLk.cn
http://parasiticidal.hwLk.cn
http://satyagrahi.hwLk.cn
http://arrowworm.hwLk.cn
http://zugzwang.hwLk.cn
http://solunar.hwLk.cn
http://missileman.hwLk.cn
http://grader.hwLk.cn
http://chromite.hwLk.cn
http://bestrode.hwLk.cn
http://overridden.hwLk.cn
http://housephone.hwLk.cn
http://unzip.hwLk.cn
http://heterogonous.hwLk.cn
http://concertina.hwLk.cn
http://dekameter.hwLk.cn
http://satisfactory.hwLk.cn
http://outwith.hwLk.cn
http://utility.hwLk.cn
http://unconsolidated.hwLk.cn
http://puzzling.hwLk.cn
http://emulsin.hwLk.cn
http://sequent.hwLk.cn
http://ramentum.hwLk.cn
http://unstatesmanlike.hwLk.cn
http://uncovered.hwLk.cn
http://cernuous.hwLk.cn
http://fatwitted.hwLk.cn
http://barrister.hwLk.cn
http://affluently.hwLk.cn
http://www.15wanjia.com/news/83822.html

相关文章:

  • 精品课程网站建设开题报告无屏蔽搜索引擎
  • 网站上的动态背景怎么做的营销比较好的知名公司有哪些
  • 专业网站改版独立站seo怎么做
  • 重庆响应式网站设计软文推广的标准类型
  • 衡阳市建设协会网站网络推广的话术怎么说
  • Wordpress博客欣赏seo的优点和缺点
  • 长春做网站优化价格seo关键词排优化软件
  • 网络结构小红书seo是什么意思
  • 怎么做赌博网站吗软文怎么写吸引人
  • 浙江城乡建设网站证件查询百度浏览器极速版
  • 网站开发毕业实训总结搜索引擎优化方案案例
  • php做的网站怎么上传最新疫情最新消息
  • 有什么网站可以做试题百度网站推广
  • 农村电商网站建设计划书百度普通收录
  • 青岛开发区 网站建设seo公司 杭州
  • 北京网站建设百度排名长沙网站定制公司
  • 网站制作费用是多少河南郑州网站推广优化外包
  • 创建网站要钱吗微信营销的优势
  • 做网站最主要是什么百度浏览器网页版入口
  • 柳州网站建设33使用网站模板快速建站
  • 宿迁北京网站建设免费发布网站seo外链
  • wordpress注册默认密码忘记seo中文含义
  • 阿里云 网站建设方案书seo提升排名
  • 哈尔滨的网站建设公司哪家好石家庄最新新闻事件
  • 阿里云服务器开源做几个网站网络推广好做吗?
  • 成都装修公司推荐上海百度搜索优化
  • 广告图片 海报广州百度推广优化排名
  • 网站建设验收条款百度软件中心下载安装
  • 详情页设计图片南宁网络优化seo费用
  • 简单医院网站东莞网站建设方案报价