【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;
}
相关推荐
点云侠42 分钟前
PCL 生成三棱锥点云
c++·算法·最小二乘法
.道阻且长.1 小时前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++
laplaya1 小时前
使用 vcpkg 管理 C++ 项目中的依赖
开发语言·c++
blueman88883 小时前
VS2022 切换定义(F12 / Go to Definition)反应慢
c++·visual studio
凡人叶枫3 小时前
Effective C++ 条款35:考虑 virtual 函数以外的其他选择
java·c++·spring
乌托邦2号3 小时前
Qt实现CS的自动化构建流程
qt·自动化
郝学胜-神的一滴3 小时前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
桀人4 小时前
C++——string类的详细介绍
开发语言·c++
小短腿的代码世界4 小时前
WebSocket协议在Qt中的工业级实现:5层架构设计与万级并发压测验证
qt·websocket·网络协议
插件开发4 小时前
vs2015 cuda c++ cdpSimplePrint范例,递归功能实现演示
linux·c++·算法