• 6968阅读
  • 3回复

QGraphicsItem(容器) 中要拖放QGraphicsItem 要重载哪些类?? [复制链接]

上一主题 下一主题
离线hu851217
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-13
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
关键词: 求助
        virtual    void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
        virtual    void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
        virtual    void dropEvent(QGraphicsSceneDragDropEvent *event);
*/
        void mousePressEvent(QGraphicsSceneMouseEvent *event);
        void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
        void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
*/

中的那几个啊????  是在父容器实现哪些,在Item 里要实现哪些????
真的要重绘吗??


那个大哥给个例子!!!!!!!!!!!!!

离线qsrong

只看该作者 1楼 发表于: 2010-08-13
设置flag:GraphicsItem::ItemIsMovable 就可以了
离线sbtree
只看该作者 2楼 发表于: 2010-08-14
拖放功能首先要明确从哪里到哪里,你说QGraphicsItem(容器),他的容器主要就是QGraphicsScene,如果只是在同一个容器中操作,那只能叫移动,也就是move,正如楼上所说的,设置那个标记就可以了。
如果你把QGraphicsItem子类化,并设计成一个容器的话,那又是另一种概念。而且还要调用setAcceptDrops()函数,以允许外部的数据以拖放的方式进入到当前对象,当然还要实现dragXXEvent和dropEvent函数了
拖放功能的完全意义在于在完全不同的对象间通过鼠标操作而完成数据交换,之就要求所有涉及的对象都要对此完成一些工作,比如从一个文本窗口拖拽一行文字到你的QGraphicsItem,当然需要文本窗口的配合才行,当然某些部件可能已经把这些功能实现了,只要你开启就行了。
windows 7 + VC++2008 + Qt4.5.2
离线hu851217

只看该作者 3楼 发表于: 2010-08-17
谢谢!
快速回复
限100 字节
 
上一个 下一个