分享我用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 条评论
登录 后参与评论

相关文章

来自专栏针针小站

【Skill】忘记了WP后台密码怎么办,配合PhpMyAdmin找回密码

1874
来自专栏一个会写诗的程序员的博客

bootstrap-table 前端分页,刷新事件代码实例

参考文档: http://bootstrap-table.wenzhixin.net.cn/

8121
来自专栏GuZhenYin

C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)

前言 上篇文章地址: C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) 今天我们来讲一下如何使用Came...

2405
来自专栏落影的专栏

iOS开发笔记(二)

前言 开发做笔记是好习惯,总结分享是巩固记忆。 遇到问题,思考其背后的原因、原理。 AFNetworking 1、progress回调block,不在主线程;...

3427
来自专栏程序员的SOD蜜

电脑静音工作,又听不到12306的来票音乐,纠结啊 !但春节前工作多任务重,不能安心工作,就动手做个“无声购票弹窗”工具吧!

当你在办公室里面工作,周围有老板、领导,但又着急买春节的火车票怎么办? 开着电脑声音,出票火车鸣笛声没听到,QQ聊天工具等不和谐的声音放出来了怎么办? 为了不让...

2976
来自专栏KK的小酒馆

Notification与Widget(其实没怎么讲)Android应用界面开发

Notification与Widget,他们为什么要一起讲呢?因为他们很相似,甚至自定义界面的方法都是一样的,这点可能很多书里没有写

1864
来自专栏吴老师移动开发

Flutter中ScrollView及其子类(ListView等)的下拉刷新

先丢一个github的demo代码地址 移动开发发展到现在,下拉刷新是个必不可少的功能了。

5113
来自专栏数据结构与算法

My Vim

noip考完啦 不管成绩怎么样,以后不用Dev啦。 尝试一下传说中的Vim 我的Vim配置 Vim8.0 https://files.cnblogs.com/f...

5797
来自专栏张善友的专栏

使用jQuery Uploadify在ASP.NET 上传附件

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。Uploadify官方网址:http://www.uploadify.com/,...

2409
来自专栏流柯技术学院

用Fiddler模拟低速网络环境

但当有人反应说「你的网页好慢」 甚至当网路速度慢,会造成你的网页跳出什么啊哩不哒的bug时要如何重现呢?

1382

扫码关注云+社区

领取腾讯云代金券