• 6835阅读
  • 8回复

qt电子地图中,用scale放大后要保持文本不放大的问题 [复制链接]

上一主题 下一主题
离线引子
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-09
窗口是继承QGraphicsVeiw,道路信息文件MIF通过QGraphicsItem在场景中画出,用缩放条实现场景的放大缩小,代码:
voidMapWidget::slotZoom(intvalue)
{qreal s;
if(value>zoom)//zoomin
{
  s=pow(1.02,(value-zoom));
}
else//zoomout
{
   s=pow((1/1.02),(zoom-value));
}
  scale(s,s);
  zoom=value;
}
现在想要实现:当进行缩放时,场景中道路等其他图元放大,但是道路名称等文字信息(通过QGraphiscsTextItem添加进的场景)大小不变。请问这个如何实现?恳请赐教![/pre]


[ 此帖被引子在2011-02-09 15:12重新编辑 ]
步子大了扯着蛋!
离线引子
只看该作者 1楼 发表于: 2011-02-09
在线等,请高手赐教,不胜感激呀
步子大了扯着蛋!
离线引子
只看该作者 2楼 发表于: 2011-02-09
要求实现的放大前后的效果图如下面的图片
[ 此帖被引子在2011-02-09 15:31重新编辑 ]
步子大了扯着蛋!
离线hasitate

只看该作者 3楼 发表于: 2011-02-09
可以根据当前scale的大小调整textItem的pen的size
离线引子
只看该作者 4楼 发表于: 2011-02-09
回 3楼(hasitate) 的帖子
您的意思是,在每次缩放后都重画所有的textItem吗?
步子大了扯着蛋!
离线hasitate

只看该作者 5楼 发表于: 2011-02-09
就是重载QGraphiscsTextItem的paint函数,在这个函数中设置pen的size
离线引子
只看该作者 6楼 发表于: 2011-02-10
继承QGraphiscsItem后,当缩放条滑动时,用项目的scale反向改变项目的大小即可。
还是谢谢你了
步子大了扯着蛋!
离线sbtree
只看该作者 7楼 发表于: 2011-02-10
最简单的方法就是设置你的TextItem标志QGraphicsItem::ItemIgnoresTransformations为真
windows 7 + VC++2008 + Qt4.5.2
离线引子
只看该作者 8楼 发表于: 2011-02-10
回 7楼(sbtree) 的帖子
谢谢,您的方法最好,我已经按您的方法实现了
步子大了扯着蛋!
快速回复
限100 字节
 
上一个 下一个