26、Qt使用QFontDatabase类加载ttf文件更改图标颜色

一、图标下载

iconfont-阿里巴巴矢量图标库

点击上面的链接,在打开的网页中搜索自己要使用的图标,如:最大化

找到一个自己想用图标,选择“添加入库”

点击“购物车”图标

能看到刚才添加的图标,点击“下载代码”(需要注册登录)

下载好的压缩包,解压后,有如下几个文件

二、创建项目

创建一个Qt项目

在项目文件夹中创建一个文件夹“icon”,把刚才解压的几个文件拷贝进去

右击项目名称,选择“Add New...”

选择Qt->Qt Resource File,点击“choose”

输入名称“file”,点击下一步 

默认,点击完成

点击 添加->添加前缀

 删除前缀中的原有内容

 点击 添加->添加文件

选择icon文件夹中的“iconfont.ttf” 

 Ctrl+S 保存

在ui界面中添加一个QPushButton,调整一下大小,右击转到槽

分别选择“pressed()”  和 “released()”

三、程序代码

mainwindow.h中的代码不需要更改

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_pressed();

    void on_pushButton_released();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp中的代码更改如下

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

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

    //加载字体文件.ttf
    int fontId = QFontDatabase::addApplicationFont(":/icon/iconfont.ttf");
    QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
    QFont iconFont = QFont(fontName);

    iconFont.setPixelSize(28); //更改大小
    ui->pushButton->setFont(iconFont); //设置字体
    ui->pushButton->setText(QChar(0xe653)); //设置如表字体
    //控件背景透明,图标颜色为black
    ui->pushButton->setStyleSheet(QString("QPushButton{background-        color:rgba(0,0,0,0);color:%1}").arg("black"));
}

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

/**
* @brief MainWindow::on_pushButton_pressed 鼠标按下时,控件背景透明,图标颜色变为red
*/
void MainWindow::on_pushButton_pressed()
{
    ui->pushButton->setStyleSheet(QString("QPushButton{background-    color:rgba(0,0,0,0);color:%1}").arg("red"));
}

/**
* @brief MainWindow::on_pushButton_released 鼠标抬起时,控件背景透明,图标颜色恢复成balck
*/
void MainWindow::on_pushButton_released()
{
    ui->pushButton->setStyleSheet(QString("QPushButton{background-color:rgba(0,0,0,0);color:%1}").arg("black"));
}

四、 代码说明

“iconfont.tff”的文件路径,直接右击拷贝就行

 此处的“e653”来自“icon”文件夹中的“demo_index.html”文件

用浏览器打开“demo_index.html”文件,可以看到图标下有“e653”

 五、运行测试

初始图标是黑色的

鼠标点击之后变成红色

鼠标松开,又变回黑色

六、最后总结

优点:不用下载多个颜色的图标,就可以改变图标颜色

缺点:此处设置图标使用的是setText()函数,只能设置图标,不能再添加文字了

相关推荐

  1. MFC 本地文件设置图标

    2024-05-11 09:54:09       38 阅读
  2. 【已解决】QT如何qss文件

    2024-05-11 09:54:09       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 09:54:09       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 09:54:09       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 09:54:09       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 09:54:09       18 阅读

热门阅读

  1. ASE docker related research

    2024-05-11 09:54:09       12 阅读
  2. ubuntu 安装 docker 步骤

    2024-05-11 09:54:09       12 阅读
  3. vue3+ts父子通信

    2024-05-11 09:54:09       10 阅读
  4. AI时代:低代码与人工智能引领科技创造新时代

    2024-05-11 09:54:09       12 阅读
  5. 蓝桥杯备战5.图书管理员

    2024-05-11 09:54:09       9 阅读
  6. Cocos Creator 中编码规范 (6)

    2024-05-11 09:54:09       11 阅读
  7. 【Unity】编程感悟20240510

    2024-05-11 09:54:09       12 阅读