在QT中使用图标字体库

之前研究过在UI中加载什么样的图标而不失真,然后我找到了SVG文件,加载到UI中后不会造成失真;最近研究了一个在某位大神用QT写的UI,有了新的收获,原来存在另外一种更方便的方法,那就是使用图标字体库。

使用图标字体库的优点在于,一个图标字体库中包含了许多图标,同时它可以像字体一样很方便的加载到项目中,使用简单,还有就是它跟文本有一样的特性,它放大后不会失真。

但是图标字体库资源比较少,免费的就更难找了,下面我介绍一两个免费的图标字体库,一个是:fontawesome-webfont.ttf,另一个是:pe-icon-set-weather.ttf

fontawesome-webfont.ttf   下载地址:http://fontawesome.dashgame.com/

pe-icon-set-weather.ttf   下载地址:https://www.pixeden.com/icon-fonts/the-icons-font-set-weather

在pixeden中还有许多其它的图标字体库下载:https://www.pixeden.com/icon-fonts

将字体库下载下来后,我们要怎么在QT中加载呢?

 1)首先在QT中新那些一个应用程序(Qt Widget Application)

2)在工程中新建立一个资源文件,并将字体库加载进去,如下图所示:


3)然后打开mainwindow.ui进行编辑,在需要加入图标的位置,放置一个Label控件,并清空内容和调整大小,如下图所示


4)在mainwindow.cpp中加入代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFontDatabase>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //引入图形字体
    int fontId = QFontDatabase::addApplicationFont(":/image/pe-icon-set-weather.ttf");  //加入字体,并获取字体ID
    QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);    //获取字体名称
    QFont iconFont = QFont(fontName);
    iconFont.setPixelSize(128);     //设置字体大小

    ui->lab_e901->setFont(iconFont);        //设置Label的字体
    ui->lab_e901->setText(QChar(0xe901));   //设置Label的文体
    ui->lab_e901->setStyleSheet("color:red;");

    QPalette blue_pe;
    blue_pe.setColor(QPalette::WindowText,Qt::blue);
    ui->lab_e903->setFont(iconFont);
    ui->lab_e903->setText(QChar(0xe903));
    ui->lab_e903->setPalette(blue_pe);

    ui->lab_e905->setFont(iconFont);
    ui->lab_e905->setText(QChar(0xe905));

    ui->lab_e907->setFont(iconFont);
    ui->lab_e907->setText(QChar(0xe907));
}

MainWindow::~MainWindow()
{
    delete ui;
}

图标默认的颜色为黑色,跟文本一样,我们可以设置Label的颜色色来改变图标的颜色,以上提供了两种方法,一是设置样式表,二是,设置Palette。

在这里需要注意的是,在设置文本时,要使用特定的代码,代码查询可以查看和字体库包一起的,说明文档(reference.html),如下图所示:勾选显示代码项(show codes),(e901、e903.....即代码)


5)最后编译运行项目



阅读更多
个人分类: QT C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

在QT中使用图标字体库

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭