• 5888阅读
  • 2回复

如何在svg图像上点击鼠标获取id? [复制链接]

上一主题 下一主题
离线poupanda
 
只看楼主 倒序阅读 楼主  发表于: 2012-04-23

被临时抓来用qt做个图形界面
比如说我的svg图形里有一个长方形(id = rect)和圆,我想在显示整个图像的基础上,鼠标点击长方形的话,弹出对话框显示长方形的id。
请问该如何“获取这个长方形的id”?

我尝试了下面的方法:
试着用QSvgWidget,显示的只是整个图像。
用QGraphicsSvgItem,可以通过setElementId显示对应id的图形,但是这个只能显示一个id的图形。

想通过qgraphicssvgitem.cpp源码看看它是如何获取id的,没理解。它到底是怎样才读取svg中的各个id然后找到相应的。
  1. void QGraphicsSvgItem::setElementId(const QString &id)
  2. {
  3.     Q_D(QGraphicsSvgItem);
  4.     d->elemId = id;
  5.     d->updateDefaultSize();
  6.     update();
  7. }

如果没有直接获取svg图像里id的方法,那么我想通过QGraphicsSvgItem的setElementId把每个id都加进去,然后拼出原来的图。如果这样的话,我怎么才能把svg里的每个图形放在正确的位置?

先谢过各位了。

离线sylcool

只看该作者 1楼 发表于: 2012-07-13
帮顶一下……
S.D.Light
离线sylcool

只看该作者 2楼 发表于: 2012-07-13
楼主用QSvgWidget或QGraphicsSvgItem能显示动态的效果吗?
<g>
  <polygon fill="yellow" points="-10,-6, -10,6, 10,0" stroke="blue" transform="matrix(1 0 0 1 0 0)" >
   <animateMotion begin="0s" path="M255,345 L255,150" repeatCount="indefinite" dur="10s" rotate="auto" />
</polygon>
</g>
这段用浏览器打开有动态效果……
S.D.Light
快速回复
限100 字节
 
上一个 下一个