查看完整版本: [-- 请教QGraphicsScene中的mouseMoveEvent方法 --]

QTCN开发网 -> Qt基础编程 -> 请教QGraphicsScene中的mouseMoveEvent方法 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jz0301 2010-09-08 13:19

请教QGraphicsScene中的mouseMoveEvent方法

各位好!我想在SCENE中实现画线,操作如下:鼠标点击一点后释放,移动鼠标到另一点,再次点击鼠标并释放,完成画线。
现在我想在两次点击之间,鼠标移动时也能画线,只是线的终点是跟随鼠标移动的(同AutoCAD中画直线和折线的方法)。
在QGraphicsScene中有一个叫mouseMoveEvent的虚函数,但他只能在鼠标拖拽的时候得到响应,我想在没有按下任何鼠标按键的时候也可以得到响应,该如何做呢?

xtfllbl 2010-09-08 14:34
我想在没有按下任何鼠标按键的时候也可以得到响应


注意设置setMouseTracking

jz0301 2010-09-08 15:04
版主您好啊
setMouseTracking是QWidget的方法啊,QGraphicsScene是直接派生自QObject的。
我试过在QGraphicsView中添加,但是没有作用。

xtfllbl 2010-09-08 16:04
http://topic.csdn.net/u/20080924/19/12bc89e6-4276-481e-af16-4e6f9a26ddfa.html

貌似不用设置,直接响应。

jz0301 2010-09-08 19:41
我试过的啊,的确不能直接响应啊,必须按下鼠标左键或者右键才能响应

jz0301 2010-09-09 09:14
http://www.qtcn.org/bbs/read.php?tid=17300
看看这个帖子,以前也有人碰到过类似的问题的

beaujolais 2010-09-10 09:45
我设置了setMouseTracking(true);  就可以了,以下代码

#include "myview.h"
[pre]MyView::MyView(QWidget *parent) :[/pre][pre] QGraphicsView(new QGraphicsScene(), parent)[/pre][pre]{[/pre][pre] scene()->setBackgroundBrush(QColor(127, 127, 127)); // 设置场景背景[/pre]
[pre] setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);[/pre][pre] setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);[/pre][pre] setFrameShape(QFrame::NoFrame);[/pre][pre] setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);[/pre]
[pre] this->setMouseTracking(true);[/pre][pre]}[/pre][pre]void MyView::paintEvent(QPaintEvent *event)[/pre][pre]{[/pre]
[pre]}[/pre]
[pre]void MyView::resizeEvent(QResizeEvent *event)[/pre][pre]{[/pre][pre] layoutChanged();[/pre][pre]}[/pre]
[pre]void MyView::dataChanged()[/pre][pre]{[/pre]
[pre]}[/pre]
[pre]void MyView::layoutChanged()[/pre][pre]{[/pre][pre] update();[/pre][pre]}[/pre][pre]void MyView::mouseMoveEvent(QMouseEvent *event)[/pre][pre]{[/pre][pre] qDebug()<<event->pos();[/pre][pre] update();[/pre][pre]}[/pre]

shuaicoin 2017-06-06 18:38
view 中设置setMouseTracking(true);


查看完整版本: [-- 请教QGraphicsScene中的mouseMoveEvent方法 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled