• 6924阅读
  • 2回复

如何用鼠标移动QGraphicsScene类的对象? [复制链接]

上一主题 下一主题
离线superwave
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-23
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
开辟动态空间 QGraphicsItem *pnode = new QGraphicsItem[6376] (QGraphicsItem是QT里面的一个类)

scene = new QGraphicsScene(0, 0, Xmax*VisZoom, Ymax*VisZoom);

然后通过scene->addItem(&pnode)把6376个QGraphicsItem 的对象加到scene上显示,如下图:(每个小红点就是一个GraphicsItem 对象)



我想点击下鼠标就相当于选中这个scene,然后移动鼠标,scene连带着6376个item都一起跟着鼠标移动。最后释放鼠标,scene也停在这个位置。
离线sbtree
只看该作者 1楼 发表于: 2010-11-23
引用楼主superwave于2010-11-23 15:04发表的 如何用鼠标移动QGraphicsScene类的对象? :
开辟动态空间 QGraphicsItem *pnode = new QGraphicsItem[6376] (QGraphicsItem是QT里面的一个类)
scene = new QGraphicsScene(0, 0, Xmax*VisZoom, Ymax*VisZoom);
然后通过scene->addItem(&pnode)把6376个QGraphicsItem 的对象加到scene上显示,如下图:(每个小红点就是一个GraphicsItem 对象)
.......

你的问题描述有问题。
首先,QGraphicsItem 是抽象类,不能被实例化的。其次,鼠标按下要选中所有点,这一步要编程实现,例如遍历所有点,为每个点设置selected。
至于拖动,要为每个item设置flag,setFlag(ItemIsMoveable, true)。结合帮助文档,慢慢去试一试吧
windows 7 + VC++2008 + Qt4.5.2
离线superwave
只看该作者 2楼 发表于: 2010-12-02
thanks a lot
快速回复
限100 字节
 
上一个 下一个