Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >分享我用Qt开发的应用程序【二】在Qt应用程序中使用字体图标fontawesome

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

作者头像
liulun
发布于 2018-01-12 07:00:46
发布于 2018-01-12 07:00:46
1.8K0
举报
文章被收录于专栏:liulunliulun

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

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

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

代码语言:js
AI代码解释
复制

#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

然后加载到全局字体中

代码语言:js
AI代码解释
复制

#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);
}

只要这样调用即可:

代码语言:js
AI代码解释
复制

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-06-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
空类型指针
malloc 查看底层源码中发现是空类型的指针,空类型的指针可以接收任意类型的指针,但是不能取出指针里的内容,如果要取出内容必须要强转。
潇洒
2019/07/02
8030
用flutter_staggered_grid_view实现分页瀑布流效果【flutter20个实例之四】
GridView是一个可滚动的,2D数组控件可以用这个组件实现滚动效果,但是它渲染的高度是一样的。
sinnoo
2020/11/13
3.9K0
用flutter_staggered_grid_view实现分页瀑布流效果【flutter20个实例之四】
应用程序与驱动程序通信 DeviceIoControl
这种通信方式,就是驱动程序和应用程序自定义一种IO控制码,然后调用DeviceIoControl函数,IO管理器会产生一个MajorFunction 为IRP_MJ_DEVICE_CONTROL(DeviceIoControl函数会产生此IRP),MinorFunction 为自己定义的控制码的IRP,系统就调用相应的处理IRP_MJ_DEVICE_CONTROL的派遣函数,你在派遣函数中判断MinorFunction ,是自定义的控制码你就进行相应的处理。
战神伽罗
2019/10/12
1.7K0
DevOps-版本控制系统-GitLab部署
这里使用的系统是CentOS8, 清华源:mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
DevOps云学堂
2021/02/26
1.1K0
C++实现epoll echo服务器
通常来说,实现处理tcp请求,为一个连接一个线程,在高并发的场景,这种多线程模型与Epoll相比就显得相形见绌了。epoll是linux2.6内核的一个新的系统调用,epoll在设计之初,就是为了替代select, poll线性复杂度的模型,epoll的时间复杂度为O(1), 也就意味着,epoll在高并发场景,随着文件描述符的增长,有良好的可扩展性。
evenleo
2020/09/08
3.2K0
winform实现下拉控件的无限级联动(DevExpress版)
1程序用到了第三方的DevExpress控件 2属性 private List<TradeTypeEntity> trades = null;//存储数据         private List<LookUpEdit> ctl_dic = new List<LookUpEdit>();//存储控件         private TradeTypeEntity empty_model = new TradeTypeEntity() { PT_TradeID = null, PT_TradeName = "
liulun
2022/05/09
6460
【专业技术】android 应用程序如何获取root权限
问题: 我遇到的问题是,在setting中我要操作/dev/mem设备,在一个寄存器中写值。对/dev/mem的操作毫无疑问是需要root权限的。开始我的做法是使用jni方法。添加一个jni调用然后setting调用。但是就算我把/dev/mem的权限模式设置为777,在setting中依旧无权限打开/dev/mem。 解决方法: 把操作/dev/mem的部分写成一个独立的应用程序,然后在init.rc中启动一个service,把此服务的属性设置为 oneshot以及disabled,然后在需要的时候在se
程序员互动联盟
2018/03/12
1.9K0
Oracle 控制文件(CONTROLFILE)
为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份
Leshami
2018/08/07
6460
HtmlDocument.InvokeScript 方法 (String, Object[])「建议收藏」
HtmlDocument.InvokeScript 方法 (String, Object[])
全栈程序员站长
2022/09/09
6810
openGaussDB 初体验(下)
由于上篇文章较长,故分开写,点击可看上文 openGauss DB 初体验(上)看完后进入到如下接着来正式安装 openGauss。
JiekeXu之路
2020/08/06
2.4K0
openGaussDB 初体验(下)
SPFILE 错误导致数据库无法启动(ORA-01565)
--==========================================
Leshami
2018/08/07
1.4K0
CreateFile DeviceIoControl dwIoControlCode——应用程序与驱动程序通信
在“进程内存管理器中”的一个Ring0,Ring3层通信问题,之前也见过这样的代码,这次拆分出来详细总结一下。
战神伽罗
2019/07/24
2K0
DBA生存警示:保护现场不要让事情更糟
张乐奕 云和恩墨副总经理 Oracle ACE 总监 ITPUB Oracle数据库管理版版主、Oracle高可用版版主、ACOUG联合创始人 今天收到一个发过来请求帮助的 case,Oracle 数据库无法启动,请求帮助恢复。仔细阅读了发过来的告警日志,这是一个典型的“事情越弄越糟”的案例。 作为一个专业的DBA,在遇到问题时,一定要思考:如何保护现场,不让事情变得更糟。这是基本要求,保护现场以使得其他人接手工作时,可以从原有状态开始。 以下就来根据告警日志,一条一条地回顾这位 DBA 是如何将数据
数据和云
2018/03/06
1.1K0
DBA生存警示:保护现场不要让事情更糟
NIO,epoll,多路复用,更好地理解IO
java代码和系统调用有一定的关系,Java是解释型语言(Java并不值钱,值钱的是jvm),我们所写的java代码最终都编译成字节码,然后去进行系统调用,本文我们还是从一个简单的服务端程序学习理解下io。
IT大咖说
2021/08/12
5180
NIO,epoll,多路复用,更好地理解IO
Oracle rman备份和恢复常规操作
差异增量备份(Differential Incremental Backup)模式(默认): LV0:全备。 LV1:最近一次LV0或LV1至今的变化。 LV2:最近一次LV0或LV1或LV2至今的变化。 优缺点:速度较快、因为仅存储少量变化的块、但需要更长的时间来恢复
mingjie
2022/05/12
6930
linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
一、epoll 系列函数简介 #include <sys/epoll.h> int epoll_create(int size); int epoll_create1(int flags); i
s1mba
2017/12/28
2.1K0
Dataguard配置Step by Step
http://www.eygle.com/ha/dataguard-step-by-step.htm
数据和云01
2018/09/05
5740
数据库管理员DBA必知必会的备份恢复(一)
首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库(shutdown)
用户1289394
2021/12/21
4580
Oracle数据库文件路径变更
2.数据文件alter database rename file '' to '';
Alfred Zhao
2019/05/24
2.2K0
一天内碰到的3个rac节点问题 (r6笔记第36天)
说到问题,真是层出不穷,自己也算搭建了也不少的rac环境的,但是在本地试验的时候总是会碰到一些问题,昨晚铲掉旧环境,搭建了两遍rac环境,终于在凌晨搭建好了环境,配置好EM,看了下效果,还不错,然后就把虚拟机设为suspend状态,早上打开虚拟机发现两个节点都自动停掉了,再次重启就启动不了了。 这个时候其实问题才刚刚开始。 #问题1:节点实例无法启动 使用srvctl启动报出了下面的错误。 srvctl start database -d RACDB PRKP-1001 : Error starti
jeanron100
2018/03/16
7450
推荐阅读
相关推荐
空类型指针
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文