Qt内置图标速查表
文章目录
- 1、说明🌾
- 2、实现效果🌱
- Qt6.7以下版本
- Qt6.7以上版本
- 3、主要代码🌳
更多精彩内容 |
---|
👉个人内容分类汇总 👈 |
1、说明🌾
在我们使用Qt开发程序时,需要美化界面总会想到贴图,显示图标,但是下载图标又很麻烦;
Qt其实已经在QStyle类中内置了一些常用的图标,可以直接使用。
Qt6.7后版本在QIcon中也内置了图标。
2、实现效果🌱
Qt6.7以下版本
Qt6.7以上版本
3、主要代码🌳
#include "widget.h"
#include "ui_widget.h"#include <qlabel.h>
#include <QIcon>
#include <QStyle>
#include <QMetaEnum>
#include <QtMath>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("Qt内置图标速查表");// 将枚举的名称和数值添加进下拉列表中QMetaEnum m = QMetaEnum::fromType<QStyle::StandardPixmap>();int row = (int)qSqrt(m.keyCount()); // 计算一排多少个int x =0;int y = 0;for(int i = 1; i <= m.keyCount(); ++i){QStyle::StandardPixmap icon = QStyle::StandardPixmap(i - 1); // 遍历获取枚举QLabel* label = new QLabel();label->setPixmap(this->style()->standardPixmap(icon));label->setAlignment(Qt::AlignCenter); // 图标居中label->setToolTip(QString("[%1,%2] ").arg(x).arg(y) + m.key(i - 1));label->setFrameShape(QFrame::Box); // 设置边框ui->gridLayout_style->addWidget(label, x, y, 1, 1);x++;if(i > 0 && i % row == 0){y++;x = 0;}}#if (QT_VERSION > QT_VERSION_CHECK(6, 7, 0))int count = (int)QIcon::ThemeIcon::NThemeIcons;row = (int)qSqrt(count); // 计算一排多少个x =0;y = 0;for(int i = 1; i < count; ++i){QIcon icon = QIcon::fromTheme(QIcon::ThemeIcon(i - 1));QLabel* label = new QLabel();label->setPixmap(icon.pixmap(36));label->setAlignment(Qt::AlignCenter); // 图标居中label->setToolTip(QString("[%1,%2] ").arg(x).arg(y) + icon.name());label->setFrameShape(QFrame::Box); // 设置边框ui->gridLayout_icon->addWidget(label, x, y, 1, 1);x++;if(i > 0 && i % row == 0){y++;x = 0;}}
#endif}Widget::~Widget()
{delete ui;
}