【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;
}
相关推荐
半桔13 分钟前
【算法深练】分组循环:“分”出条理,化繁为简
数据结构·c++·算法·leetcode·面试·职场和发展
道剑剑非道19 分钟前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
开发语言·qt·ffmpeg
@残梦25 分钟前
129、QT搭建FFmpeg环境
开发语言·qt·ffmpeg
序属秋秋秋39 分钟前
《C++初阶之类和对象》【命名空间 + 输入&输出 + 缺省参数 + 函数重载】
开发语言·c++·笔记
Kethy__1 小时前
算法分析与设计-动态规划、贪心算法
c++·学习·算法·贪心算法·动态规划
Code_流苏3 小时前
C++课设:学生成绩管理系统
c++·大作业·学生成绩管理系统·c++课设·期末课设
鑫鑫向栄8 小时前
[蓝桥杯]取球博弈
数据结构·c++·算法·职场和发展·蓝桥杯·动态规划
三十一6149 小时前
6.4 C++作业
开发语言·c++
虾球xz11 小时前
CppCon 2014 学习: An Overview of C++11/14
开发语言·c++·学习