【Qt c++】Qt内置图标

Qt内置图标

前言

Qt内置图标封装在QStyle中,大概七十多个图标,可以直接拿来用。图标的大小:我认为 size = 30 还是可以的.

简例

cpp 复制代码
SP_TitleBarMenuButton,
SP_TitleBarMinButton,
SP_TitleBarMaxButton,
SP_TitleBarCloseButton,
SP_MessageBoxInformation,
SP_MessageBoxWarning,
SP_MessageBoxCritical,
SP_MessageBoxQuestion,
...
//下面这样取出来使用就行
QPixmap pixmap = this->style()->standardPixmap(QStyle::SP_TitleBarMenuButton);
ui->label->setPixmap(pixmap);

示例

  • main.cpp
cpp 复制代码
#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
  • mainwindow.h
cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

private:
    Ui::MainWindow *ui;
    int min_i;
    int max_i;
    int current_i;
    int size ;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp
cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
#include <QStyle>
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //下面这样取出来使用就行
    //QPixmap pixmap = this->style()->standardPixmap(QStyle::SP_TitleBarMenuButton);

    // 遍历 StandardPixmap 枚举
    min_i = QStyle::SP_TitleBarMenuButton;
    max_i = QStyle::SP_LineEditClearButton;
    current_i = min_i;
    size = 24;

    QStyle::StandardPixmap StandardPixmap = static_cast<QStyle::StandardPixmap>(current_i);
    QPixmap pixmap = this->style()->standardPixmap(StandardPixmap);

    QSize desiredSize(size, size); // 设置您需要的尺寸
    pixmap = pixmap.scaled(desiredSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);

    ui->label->setPixmap(pixmap);
}

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


void MainWindow::on_pushButton_clicked()
{
    if(++current_i > max_i)
    {
        QMessageBox::information(0,"Tips","from min_i begin");
        current_i = min_i;
    }
    QStyle::StandardPixmap StandardPixmap = static_cast<QStyle::StandardPixmap>(current_i);
    QPixmap pixmap = this->style()->standardPixmap(StandardPixmap);

    QSize desiredSize(size, size); // 设置您需要的尺寸
    pixmap = pixmap.scaled(desiredSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);

    ui->label->setPixmap(pixmap);
}

void MainWindow::on_pushButton_2_clicked()
{
    size++;
    QStyle::StandardPixmap StandardPixmap = static_cast<QStyle::StandardPixmap>(current_i);
    QPixmap pixmap = this->style()->standardPixmap(StandardPixmap);

    QSize desiredSize(size, size); // 设置您需要的尺寸
    pixmap = pixmap.scaled(desiredSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);

    ui->label->setPixmap(pixmap);
    qDebug()<<"size:"<<size;
}

void MainWindow::on_pushButton_3_clicked()
{
    if(--size < 15)
    {
        size++;
    }
    QStyle::StandardPixmap StandardPixmap = static_cast<QStyle::StandardPixmap>(current_i);
    QPixmap pixmap = this->style()->standardPixmap(StandardPixmap);

    QSize desiredSize(size, size); // 设置您需要的尺寸
    pixmap = pixmap.scaled(desiredSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);

    ui->label->setPixmap(pixmap);
    qDebug()<<"size:"<<size;
}
相关推荐
AC赳赳老秦5 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
无名猿5 小时前
C++ 查找算法:std::find 与容器成员 find 的性能差距
c++·性能优化·stl·标准库
程序猿编码6 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
朝朝辞暮i7 小时前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
SHARK_pssm8 小时前
【C++——类和对象(下)】
开发语言·c++·经验分享·笔记
汉克老师8 小时前
GESP2026年9月认证C++二级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
沫璃染墨9 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
可乐ea10 小时前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化
朝朝辞暮i10 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
无忧.芙桃12 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法