Qt:读写SVG

2023-11-11

Qt:读写SVG

//绘制SVG图形:

SvgView::SvgView(const QString &file, QWidget *parent)
    : QWidget(parent)
{
    doc = new QSvgRenderer(file, this);  //QSvgRenderer将SVG图形绘制到绘图设备上
    connect(doc, SIGNAL(repaintNeeded()),  //文档需要更新时发出,通常用来实现动画效果
            this, SLOT(update()));
}

void SvgView::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.setViewport(0, 0, width(), height());
    doc->render(&p);
}

QSize SvgView::sizeHint() const
{
    if (doc)
        return doc->defaultSize();
    return QWidget::sizeHint();
}

void SvgView::wheelEvent(QWheelEvent *e)
{
    const double diff = 0.1;
    QSize size = doc->defaultSize();
    int width  = size.width();
    int height = size.height();
    if (e->delta() > 0) {      //此函数已废弃,用pixelDelta() / angleDelta() instead.
        width = int(this->width()+this->width()*diff);
        height = int(this->height()+this->height()*diff);
    } else {
        width  = int(this->width()-this->width()*diff);
        height = int(this->height()-this->height()*diff);
    }
    resize(width, height);
}
//    void MyWidget::wheelEvent(QWheelEvent *event)
//    {
//        QPoint numPixels = event->pixelDelta();
//        QPoint numDegrees = event->angleDelta() / 8;

//        if (!numPixels.isNull()) {
//            scrollWithPixels(numPixels);
//        } else if (!numDegrees.isNull()) {
//            QPoint numSteps = numDegrees / 15;
//            scrollWithDegrees(numSteps);
//        }

//        event->accept();
//    }

//生成SVG图形:

#include <QApplication>
#include <QtGui>
#include <QtSvg>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

	QSvgGenerator svgGen;
	svgGen.setFileName("test.svg");

	QRectF rectangle(10.0, 20.0, 80.0, 60.0);
	QPainter painter;
	painter.begin(&svgGen);
	QPen pen(Qt::red);
	painter.setPen(pen);
	painter.drawEllipse(rectangle);
	rectangle.moveRight(100);
	painter.drawRect(rectangle);
	
	rectangle.moveRight(100);
 	QRectF source(0.0, 0.0, 70.0, 40.0);
 	QImage image("Greenstone.bmp");
	painter.drawImage(rectangle, image, source);
	 
	painter.end();
	
	return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt:读写SVG 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • QGraphicsScene没有删除QWidget的功能

    QGraphicsScene 有一个addWidget QWidget 有函数 但是没有对应的removeWidget QWidget 它只有removeItem QGraphicsItem 如何删除 QWidget 这是一个基本示例 看看
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 如何从浮点数组创建新的 QImage

    我有一个代表图像的浮点数数组 列在前 我想在 QGraphicsSecene 上将图像显示为 QPixmap 为了做到这一点 我尝试使用 QImage 构造函数 QImage const uchar data int width int h
  • PyQt - 如何从给定的小部件获取顶级父级?

    给定的小部件如何访问它最旧的父级 即顶级小部件 我需要 showMinimized it 现在我正在使用 self parent parent parent showMinimized 但这似乎不是最好的方法 如果它移动了 我需要手动更改父
  • 无法将 QList 分配给 QString

    我遇到这个错误 Unable to assign QList
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • new 运算符(以及 malloc)无法分配约 450 MB 的内存 [重复]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序在内存中存储大约 2 2 亿个短值的数组 该数据块的分配方式如下 short arrayName new short SIZE OF ARRAY 然后将文件的内容读入内存 在团队中的另一
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A

随机推荐

  • AttributeError: ‘function‘ object has no attribute ‘_name_‘

    在运行python的下面代码时 def log func def wrapper args kw print call s func name return func args kw return wrapper log def now p
  • layui table单元格事件修改值

    事件中的 this相当于document getElementById id 替代方法就是将原本 document getElementById id InnerHTML 填充代码 替换成 id html 填充代码
  • 数据结构_队列

    队列类似于日常生活中的排队 它也是一种特殊的线性表 队列和栈有相反的逻辑 但是却属于同类结构 文章目录 队列的介绍 队列的结构 队列的实现 完整代码及测试程序 循环队列 循环队列的介绍 循环队列的实现 完整代码 队列的介绍 定义 队列是一种
  • Truechain运用docker镜像搭建TrueChain测试私有环境

    https github com truechain wiki blob master task list task 20180917 md 安装docker Mac参考https blog csdn net jiang xinxing a
  • 图像边缘检测——一阶微分算子 Roberts、Sobel、Prewitt、Kirsch、Robinson(Matlab实现)

    图像边缘一般指图像的灰度变化率最大的位置 成因主要如下 1 图像灰度在表面法向变化不连续 2 图像中物体在空间上的深度不一致 3 在光滑的表面上颜色不一致 4 图像中物体的光影 边缘检测指的是从图像中检测边缘点和边缘段 并且描述边缘方向的过
  • 无重复字符的最长字串

    1 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串的长度 代码展示 class Solution public int lengthOfLongestSubstring String s int n s length if n
  • PMAC网络USB设置

    一 连接到PMAC 在默认情况下 Power PMAC有一个IP地址为192 168 0 200 没有互联网连接 要安装所需的软件包并获得时间 您的PMAC将需要一个internet连接 为了建立你的网络连接 可以一个u盘上放一个文件夹 P
  • MYSQL数据库基本操作——DDL

    MYSQL DDL 何为DDL 对数据库的常用操作 对表结构的操作 创建表 表的其它操作 修改表结构 何为DDL DDL是数据定义语言 包括对数据库的常用操作 对表结构的常用操作 修改表结构三部分 通俗来讲 就是不包括对表内数据进行操作的所
  • 解救开发人员写文档的痛苦

    开发人员的痛苦 接手前人的项目 没有接口文档 只能看代码学习 接口文档用txt word markdown写 编写特别麻烦 写出来的文档也不美观 多层级的参数 子参数 写起来麻烦 不知道怎么表达更好 有的文档需要图文并茂 需要代码示例 需要
  • Shiro免密登录

    Shiro免密登录 代码构成 代码构成 1 创建枚举类LoginType 登录类型 public enum LoginType PASSWORD password 密码登录 NOPASSWD nopassword 免密登录 private
  • 计算机专业的浪漫情话,计算机专业表白情话 污到流水文章

    次日早起 江笑还没有到学校 就收到了顾言兮的一条短信 陈昊轩回来了 在餐厅遇到 依然众星捧月 江笑皱了一下眉 要不是这条短信 她竟然都差一点忘了还有陈昊轩这个人了 众星捧月 也能想象 陌家成了那样 陌雪是不可能在栓得住陈昊轩了 那其他对于陈
  • 游戏开发unity xlua框架知识系列:C#如何调用lua

    参看xlua框架的LuaDLL cs文件后 才知道其实lua仍然是用c写的源代码编译成不同平台的库 然后通过unity的DLLImport方法来使用的
  • 学习SQL注入基础板块---准备工作以及踩的坑

    准备 下载phpStudy 建议下载2018版本的 因为新版本让我这个菜渣折腾挺多天 下载sqli labs GitHub下载 之后将其放在安装好的phpstudy的WWW目录下 下载HackBar插件 GitHub下载2 1 3版本的 不
  • 四十岁以上的程序员都去干啥了?

    编译丨Linsa 在美国 工作者的年龄中位数是42岁 而Stack Overflow 2016年的程序员调查中 程序员的平均年龄是29 6岁 中位数为27岁 40岁以上的程序员只占总数的12 7 2016年Stack Overflow程序员
  • 方格填数(2016年蓝桥杯)

    如图 如下的10个格子 填入0 9的数字 要求 连续的两个数字不能相邻 左右 上下 对角都算相邻 一共有多少种可能的填数方案 请填写表示方案数目的整数 看到这题第一个想到的方法就是回溯 就很像八皇后 能填进去就填 填不进去就看下一个位置 我
  • 剑指 Offer 36. 二叉搜索树与双向链表(java+python)

    输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的循环双向链表 要求不能创建任何新的节点 只能调整树中节点指针的指向 为了让您更好地理解问题 以下面的二叉搜索树为例 我们希望将这个二叉搜索树转化为双向循环链表 链表中的每个节点都有一个前驱和
  • 打造属于自己的字体(转)

    打造属于自己的字体 转 more 不少做平面的朋友可能都有过这样的经历 在自己的作品中要使用某种特效字体 但是到处都找不到符合自己要求的 于是有些朋友选择了自己绘制 这当然解决了当时的问题 可你有没有想过 把你绘制的字符图形制作成为真正意义
  • windows下安装,配置gcc编译器

    在Windows下使用gcc编译器 1 首先介绍下MinGW MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境 它是Minimalist GNU on Windows的略称 实际上 MinGW 并不是一个 单纯的C C
  • J2ee集合框架

    一 Collection接口 首先如图所见 Collection是整个集合框架的顶级接口 是Set和List的父接口 但不是Map的父接口 Map也是一个顶级接口 二 List集合的特点 总的来说学习框架就是为了学习容器的数据结构 增删改查
  • Qt:读写SVG

    Qt 读写SVG 绘制SVG图形 SvgView SvgView const QString file QWidget parent QWidget parent doc new QSvgRenderer file this QSvgRen