【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;
}
相关推荐
Larry_Yanan44 分钟前
QML学习笔记(四十二)QML的MessageDialog
c++·笔记·qt·学习·ui
R-G-B1 小时前
【35】MFC入门到精通——MFC运行 不显示对话框 MFC界面不显示
c++·mfc·mfc运行 不显界面·mfc界面不显示
Madison-No72 小时前
【C++】探秘vector的底层实现
java·c++·算法
晚风残2 小时前
【C++ Primer】第十二章:动态内存管理
开发语言·c++·c++ primer
liu****2 小时前
8.list的模拟实现
linux·数据结构·c++·算法·list
保持低旋律节奏2 小时前
C++ stack、queue栈和队列的使用——附加算法题
c++
初圣魔门首席弟子2 小时前
【C++ 学习】单词统计器:从 “代码乱炖” 到 “清晰可品” 的复习笔记
开发语言·c++
十五年专注C++开发3 小时前
CFF Explorer: 一款Windows PE 文件分析的好工具
c++·windows·microsoft
郝学胜-神的一滴3 小时前
计算机图形学中的光照模型:从基础到现代技术
开发语言·c++·程序人生·图形渲染
深耕AI4 小时前
MFC + OpenCV 图像预览显示不全中断问题解决:GDI行填充详解
c++·opencv·mfc