• 17653阅读
  • 13回复

QGraphicsView移动拖放怎么实现 [复制链接]

上一主题 下一主题
离线jiang_198586
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-14
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
QGraphicsView移动拖放怎么实现,demo中例子看不懂。我想用QGraphicsView的dragMoveEvent事件实现QGraphicsView坐标的移动
离线xlttap

只看该作者 1楼 发表于: 2010-05-14
应该是对QGraphicsItem进行移动。不是GraphicsView,搞清楚对象。
我简单我快乐
离线jiang_198586

只看该作者 2楼 发表于: 2010-05-14
我想将QGrapicsScene内的所有QGraphicsItem一起移动,所以觉得直接移动QGraphicsView能不能可以,因为我做放大缩小功能时就是但对QGraphicsView操作,而实现所有QGraphicsItem的放大缩小
离线xlttap

只看该作者 3楼 发表于: 2010-05-14
引用第2楼jiang_198586于2010-05-14 14:55发表的  :
我想将QGrapicsScene内的所有QGraphicsItem一起移动,所以觉得直接移动QGraphicsView能不能可以,因为我做放大缩小功能时就是但对QGraphicsView操作,而实现所有QGraphicsItem的放大缩小

你这样是不行的,如果只想进行局部放大呢?况且你这样放大到一定的倍数时会出现马赛克现象。
我简单我快乐
离线xlttap

只看该作者 4楼 发表于: 2010-05-14
你可以把所有的都画在一个QGraphicsPixmapItem上,然后对QGraphicsPixmapItem进行操作。
我简单我快乐
离线jiang_198586

只看该作者 5楼 发表于: 2010-05-14
没有你说的那种马赛克现象啊,我程序的整个过程是,通过一个image.fdf文件来读取一些图形信息,然后根据文件提供的图形信息,一一在QGraphicsScene上画出来的,然后对该整个图形进行缩放比例,移动。不知你能理解吗?我想知道为什么QGraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)下的内容不执行,可以解释一下那个事件是在什么操作,什么时候执行的
离线jiang_198586

只看该作者 6楼 发表于: 2010-05-14
我现在连
void MyCanvas::dropEvent(QGraphicsSceneDragDropEvent *event){
    qWarning()<<"event->pos().x"<<endl;
}最基本的输出语句在我在(QGraphicsScene) MyCanvas上拖动时都没反应,是不是缺少什么信息啊
离线xlttap

只看该作者 7楼 发表于: 2010-05-14
我的建议是:用QGraphicsView或者QGraphicsItem的dragMoveEvent事件,不用QGraphicsScene的事件。我一直是这样的用的。
我简单我快乐
离线xlttap

只看该作者 8楼 发表于: 2010-05-14
引用第6楼jiang_198586于2010-05-14 15:24发表的  :
我现在连
void MyCanvas::dropEvent(QGraphicsSceneDragDropEvent *event){
    qWarning()<<"event->pos().x"<<endl;
}最基本的输出语句在我在(QGraphicsScene) MyCanvas上拖动时都没反应,是不是缺少什么信息啊

你要这样用,加上QGraphicsScene::dropEvent();
void MyCanvas::dropEvent(QGraphicsSceneDragDropEvent *event){
    QGraphicsScene::dropEvent();
    qWarning()<<"event->pos().x"<<endl;
}
我简单我快乐
离线jiang_198586

只看该作者 9楼 发表于: 2010-05-14
能给个QGraphicsView的dragMoveEvent的例子啊,简单点的。还有对QGraphicsScene整体的移动,怎么和滚动条相关呢
离线jiang_198586

只看该作者 10楼 发表于: 2010-05-14
你要这样用,加上QGraphicsScene::dropEvent();
void MyCanvas::dropEvent(QGraphicsSceneDragDropEvent *event){
    QGraphicsScene::dropEvent();
    qWarning()<<"event->pos().x"<<endl;
}


你说的这方法,我试了不行啊
离线xlttap

只看该作者 11楼 发表于: 2010-05-14
引用第10楼jiang_198586于2010-05-14 15:45发表的  :
你要这样用,加上QGraphicsScene::dropEvent();
void MyCanvas::dropEvent(QGraphicsSceneDragDropEvent *event){
    QGraphicsScene::dropEvent();
    qWarning()<<"event->pos().x"<<endl;
}
.......

呵呵,忘记了,以前出过这个问题解决了。现在不记得了。
我简单我快乐
离线jiang_198586

只看该作者 12楼 发表于: 2010-05-14
怎么办啊,有谁告诉一下啊?急用
离线robotuisky

只看该作者 13楼 发表于: 2014-07-02
楼主你的问题解决了没?我也遇到这个问题,可以共享下code嘛
快速回复
限100 字节
 
上一个 下一个