【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;
}
相关推荐
二进制人工智能2 小时前
【QT5 网络编程示例】TCP 通信
网络·c++·qt·tcp/ip
bjxiaxueliang4 小时前
一文详解QT环境搭建:Windows使用CLion配置QT开发环境
开发语言·windows·qt
莫有杯子的龙潭峡谷4 小时前
3.31 代码随想录第三十一天打卡
c++·算法
此刻我在家里喂猪呢5 小时前
qt介绍tcp通信
qt·tcp/ip
AaronZZH5 小时前
【进阶】vscode 中使用 cmake 编译调试 C++ 工程
c++·ide·vscode
杨筱毅6 小时前
【性能优化点滴】odygrd/quill 中将 MacroMetadata 变量声明为 constexpr
c++·性能优化
NaZiMeKiY6 小时前
C++ 结构体与函数
开发语言·c++
oracleworm6 小时前
Qt 代理
qt·代理模式
涛ing6 小时前
【Git “fetch“ 命令详解】
linux·c语言·c++·人工智能·git·vscode·svn
Winner13006 小时前
Qt中数据共享
开发语言·qt