专栏首页liulun分享我用Qt开发的应用程序【二】在Qt应用程序中使用字体图标fontawesome

分享我用Qt开发的应用程序【二】在Qt应用程序中使用字体图标fontawesome

为了使用简单,需要先写一个单件类,头文件的代码如下:

其中静态方法Instance保证IconHelper的实例全局唯一

(注意构造函数已经私有化了)

#ifndefICONHELPER_H
#defineICONHELPER_H
#include<QObject>
#include<QMutex>
#include<QMutexLocker>
#include<QtGui>
#include<QtWidgets>
#include<qfont.h>
classIconHelper:publicQObject
{
Q_OBJECT
private:
explicitIconHelper(QObject*parent=0);
QFonticonFont;
staticIconHelper*_instance;
public:
staticIconHelper*Instance()
{
staticQMutexmutex;
if(!_instance)
{
QMutexLockerlocker(&mutex);
if(!_instance)
{
_instance=newIconHelper;
}
}
return_instance;
}
voidSetIcon(QLabel*ctl,QCharc,intsize=10);
voidSetIcon(QPushButton*ctl,QCharc,intsize=10);
signals:
publicslots:
};
#endif//ICONHELPER_H

下面来看一下CPP文件的代码

应用程序所在目录下创建res目录,并放置字体文件/res/fontawesome-webfont.ttf

然后加载到全局字体中

#include"IconHelper.h"
IconHelper*IconHelper::_instance=0;
IconHelper::IconHelper(QObject*):
QObject(qApp)
{
intfontId=QFontDatabase::addApplicationFont(qApp->applicationDirPath()+"/res/fontawesome-webfont.ttf");
QStringfontName=QFontDatabase::applicationFontFamilies(fontId).at(0);
iconFont=QFont(fontName);
}
voidIconHelper::SetIcon(QLabel*ctl,QCharc,intsize)
{
iconFont.setPointSize(size);
ctl->setFont(iconFont);
ctl->setText(c);
}
voidIconHelper::SetIcon(QPushButton*ctl,QCharc,intsize)
{
iconFont.setPointSize(size);
ctl->setFont(iconFont);
ctl->setText(c);
}

只要这样调用即可:

IconHelper::Instance()->SetIcon(ui->LeftBtn,QChar(0xf177),12);
IconHelper::Instance()->SetIcon(ui->RightBtn,QChar(0xf178),12);

详见:http://fontawesome.io/cheatsheet/

-----------------------

我又开发了一个桌面日历的小程序分享给大家

1、黑色背景是我的桌面颜色,大家可以忽略

2、虽然右键菜单里写了“开机自启动”,但我并没有开发这个功能,请见谅

3、我会在下一篇文章里公布这个小程序的源码,敬请期待

4、这个小程序会始终在你的桌面上,你点显示桌面,它还是在你的桌面上

下载地址:http://pan.baidu.com/s/1hGh8U

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nim教程【四】

    这是国内第一个关于Nim的系列教程 先说废话 Screenshot (2).png 高雅的Nim Screenshot (3).png 方法 Screens...

    liulun
  • 学习WPF——了解WPF中的XAML

    XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<B...

    liulun
  • 【翻译】WPF4.5新特性(MSDN的翻译读不太懂)

    我很在意WPF的发展,有人说微软不再维护WPF了,无所谓,随他去。 MSDN上有简体版:http://msdn.microsoft.com/zh-cn/libr...

    liulun
  • VSCode代码格式化自动换行问题

    Mac VSCode 升级中替换了内置格式化插件导致代码格式化自动换行问题: 1、设置 2、搜索 vetur 3、右边三个点按钮,-> open sett...

    程序员不务正业
  • 华为路由交换技术 | 链路聚合/链路捆绑/端口聚合/eth-channel 详解与配置

    链路聚合:是将两个或更多数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。链路聚合一般用来连接一个或多个带宽需求大的设备,例如连接骨干网络...

    网络技术联盟站
  • 哪种 Python 程序员最赚钱?

    本文是春节经典文章回顾专题第一弹。转载自简说Python,作者XksA,详情可以扫描下方二维码关注该公众号

    数据森麟
  • Python大佬抓取了招聘信息并告诉你哪种Python 程序员最赚钱

    本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位,从拉勾网上爬取了相应的职位信息和任职...

    Python进阶者
  • python 与ADB shell交互

    使用subprocess 使设备具有部分Linux命令 python脚本:下载busybox,并且放在与脚本相同的目录下

    py3study
  • 用数据分析来看哪种 Python 程序员最赚钱?

    本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位,从拉勾网上爬取了相应的职位信息和任职...

    sergiojune
  • 银行业浩劫:未来10年,AI将取代50%银行从业者

    新智元

扫码关注云+社区

领取腾讯云代金券