找回密码
 立即注册

如何使用QT详细解析svg图

发表于 2017-7-12 14:52:55 | 显示全部楼层 |阅读模式
46Qter豆
假设我有张SVG图,里面就两个矩形,我想问下大神,要如何解析出它们各自的四个点的坐标。我知道QT里面有个示例可以读写和显示svg图,但我想要深入一点,比如显示出svg图后,我用鼠标点击其中一个矩形,我就立即判断出这个矩形的坐标。我看了QT帮助文档,svg的类共有四个
QGraphicsSvgItemQSvgGeneratorQSvgRendererQSvgWidget
请问哪位大神知道,可以指点下小弟吗

最佳答案

查看完整内容

svg你是不可以直接操作的,意思就是你得解析svg,然后把里边矩形转换成你自己的类对象,比如在QGraphicsScene里添加一个矩形,这样你才可以跟图形交互,才可以选中矩形得知坐标。
回复

使用道具 举报

发表于 2017-7-12 14:52:56 | 显示全部楼层
svg你是不可以直接操作的,意思就是你得解析svg,然后把里边矩形转换成你自己的类对象,比如在QGraphicsScene里添加一个矩形,这样你才可以跟图形交互,才可以选中矩形得知坐标。

点评

首先矩形是在svg里面的,我不是直接添加的,我的意思是我如何解析svg得到里面的矩形。我一直以来的问题都是这个,请大神帮我一下  详情 回复 发表于 2017-7-14 09:26
回复

使用道具 举报

发表于 2017-7-13 08:18:28 | 显示全部楼层
建议看下QDomElement这个类,应该可以解析

点评

QDomElement这是解析xml的,我知道svg就是xml格式内容,但是就算用这个QDomElement类解析,那要如何才能实现我需要的功能,麻烦大神指点我一条明路  详情 回复 发表于 2017-7-13 09:42
回复

使用道具 举报

 楼主| 发表于 2017-7-13 09:42:43 | 显示全部楼层
wdmxtk002 发表于 2017-7-13 08:18
建议看下QDomElement这个类,应该可以解析

QDomElement这是解析xml的,我知道svg就是xml格式内容,但是就算用这个QDomElement类解析,那要如何才能实现我需要的功能,麻烦大神指点我一条明路
回复

使用道具 举报

 楼主| 发表于 2017-7-14 09:26:59 | 显示全部楼层
wdmxtk002 发表于 2017-7-13 16:49
svg你是不可以直接操作的,意思就是你得解析svg,然后把里边矩形转换成你自己的类对象,比如在QGraphicsSce ...

首先矩形是在svg里面的,我不是直接添加的,我的意思是我如何解析svg得到里面的矩形。我一直以来的问题都是这个,请大神帮我一下

点评

第一,解析svg文件,把里边的矩形属性读出来,然后你需要在程序里把这个矩形自己画出来,就是在你的程序里它已经不是svg了,是你自己画的矩形对象。  详情 回复 发表于 2017-7-14 12:03
回复

使用道具 举报

发表于 2017-7-14 12:03:25 | 显示全部楼层
cai901022 发表于 2017-7-14 09:26
首先矩形是在svg里面的,我不是直接添加的,我的意思是我如何解析svg得到里面的矩形。我一直以来的问题都 ...

第一,解析svg文件,把里边的矩形属性读出来,然后你需要在程序里把这个矩形自己画出来,就是在你的程序里它已经不是svg了,是你自己画的矩形对象。

点评

大神,要如何把里面矩形属性读出来啊。这个才是最关键的一点。比如我里面有上百个图元,要如何精准定位到这个矩形属性。我一直以来的问题都是这个啊,不要一句话带过啊,求指导啊  详情 回复 发表于 2017-7-17 09:32
回复

使用道具 举报

 楼主| 发表于 2017-7-17 09:32:35 | 显示全部楼层
wdmxtk002 发表于 2017-7-14 12:03
第一,解析svg文件,把里边的矩形属性读出来,然后你需要在程序里把这个矩形自己画出来,就是在你的程序 ...

大神,要如何把里面矩形属性读出来啊。这个才是最关键的一点。比如我里面有上百个图元,要如何精准定位到这个矩形属性。我一直以来的问题都是这个啊,不要一句话带过啊,求指导啊
回复

使用道具 举报

发表于 2017-7-17 10:41:29 | 显示全部楼层
这就得看你的svg里边的内容了,我读写的svg文件里边有rect这个子属性
<g fill="#006e6e" fill-opacity="1" stroke="none" transform="matrix(1,0,0,1,0,0)"
font-family="SimSun" font-size="9" font-weight="400" font-style="normal"
>
<rect x="0" y="0" width="2000" height="2000"/>
</g>
我读的时候很容易就把rect坐标和宽高读出来了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

cai901022

    主题

    帖子

    334

    积分

    Qter3级会员

    Rank: 3Rank: 3

    积分
    334

Qter3级会员

发私信

Qt开源社区——开源 共享 自由

微信扫一扫
查看精品教程!