zoukankan      html  css  js  c++  java
  • Qt 读取并且显示SVG图片

    SVG图片是一种可缩放的矢量图片,是一个开放的图片标准。是由xml格式定义一种文件。
    svg图片文件具有以下优势:

    • 基于xml语言
    • 可在图像质量不下降的情况下被放大
    • 比JPEG和PNG格式的文件要小很多
    • 支持DOM

    QT中有专门读取svg图片的类,下面演示以下通过QT读取svg图片并且显示在QTableWidget控件上。

     1 void QtGuiSvg::slotLoadSvg() {
     2     QString strPath = "E:/shoudu.svg";
     3     QSvgRenderer* svgRender = new QSvgRenderer();
     4     svgRender->load(strPath);
     5 
     6     QPixmap* pixmap = new QPixmap(32,32);
     7     pixmap->fill(Qt::transparent);//设置背景透明
     8     QPainter p(pixmap);
     9     svgRender->render(&p);
    10 
    11     //1.直接采用控件显示
    12     QLabel* label = new QLabel;
    13     label->setPixmap(*pixmap);
    14     label->setAlignment(Qt::AlignHCenter);
    15     label->show();
    16 
    17     ui.tableWidget->setColumnCount(2);
    18     ui.tableWidget->setRowCount(2);
    19     ui.tableWidget->setRowHeight(0, 32);
    20 
    21     ui.tableWidget->setCellWidget(0, 0, label);
    22 
    23     QtGuiSignal* s = new QtGuiSignal;
    24     s->setPixmap(pixmap);
    25     s->setText(QStringLiteral("红色闪闪的五角星"));
    26     ui.tableWidget->setRowHeight(1, 80);
    27     ui.tableWidget->setCellWidget(1, 0, s);
    28 
    29     //2.直接显示图片
    30     ui.tableWidget->setIconSize(QSize(32, 32));
    31     ui.tableWidget->setItem(0, 1, new QTableWidgetItem(QIcon(*pixmap), QStringLiteral("红色闪闪的五角星")));
    32 }

    QtGuiSignal.ui
    在这里插入图片描述

    QtGuiSignal.h

     1 #pragma once
     2 
     3 #include <QWidget>
     4 #include "ui_QtGuiSignal.h"
     5 #include <QPixmap>
     6 
     7 class QtGuiSignal : public QWidget {
     8     Q_OBJECT
     9 
    10 public:
    11     QtGuiSignal(QWidget *parent = Q_NULLPTR);
    12     ~QtGuiSignal();
    13 
    14     void setPixmap(QPixmap* pixmap);
    15     void setText(QString str);
    16 private:
    17     Ui::QtGuiSignal ui;
    18 
    19     QPixmap* _pixmap;
    20     QString _strText;
    21 };

    QtGuiSignal.cpp

     1 #include "QtGuiSignal.h"
     2 
     3 QtGuiSignal::QtGuiSignal(QWidget *parent)
     4     : QWidget(parent) {
     5     ui.setupUi(this);
     6 }
     7 
     8 QtGuiSignal::~QtGuiSignal() {
     9 }
    10 
    11 void QtGuiSignal::setPixmap(QPixmap* pixmap) {
    12     _pixmap = pixmap;
    13     ui.labelSvg->setPixmap(*pixmap);
    14 }
    15 
    16 void QtGuiSignal::setText(QString str) {
    17     _strText = str;
    18     ui.labelText->setText(_strText);
    19 }

    运行结果:
    在这里插入图片描述

  • 相关阅读:
    jira 解决结果配置
    .net core ef mysql in 参数化写法
    CentOS安装破解版Jira 亲测有效(附带破解包)
    实现js读取Excel数据
    android权限(permission)大全
    如何搭建Nuget服务器
    WebApi配置Swagger
    Aps.Net WebApi依赖注入
    解决.Net Core跨域问题
    一篇关于Asp.Net Model验证响应消息的问题处理
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14210198.html
Copyright © 2011-2022 走看看