QGraphicsScene中捕捉鼠标事件

QGraphicsScene和QGraphicsView一般搭配用来制作动画效果。而QGraphicsScene和QWidget中的鼠标事件又不一样,经过一番查找资料,终于搞定了。1,头文件//QGraphicsScene中使用鼠标事件#include <QMouseEvent>#include <QGraphicsSceneMouseEvent>#include <QPaintEvent>#include <QKeyEvent>...
摘要由CSDN通过智能技术生成

QGraphicsScene和QGraphicsView一般搭配用来制作动画效果。
而QGraphicsScene和QWidget中的鼠标事件又不一样,在QGraphicsView中,据查一般不好处理鼠标事件,所以用QGraphicsScene来检测鼠标的信号;经过一番查找资料,终于搞定了。

1,头文件

//QGraphicsScene中使用鼠标事件
#include <QMouseEvent>
#include <QGraphicsSceneMouseEvent>
#include <QPaintEvent>
#include <QKeyEvent>
class DrivingPage : public QGraphicsScene
{
   
    Q_OBJECT
public:
    DrivingPage(const QRectF & sceneRect,QObject *parent = 0
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: QGraphicsScene是Qt一个非常有用的可视化框架,可以方便的实现各种图形界面效果。而如果要在QGraphicsScene画矩形,可以利用它的SceneMouseEvent事件来捕捉鼠标事件,通过计算得到鼠标按下和松开时的坐标,就可以得到一个矩形区域。 具体实现过程如下: 1. 创建一个QGraphicsRectItem对象,设置其大小,颜色等属性,将其添加到QGraphicsScene。 2. 在QGraphicsScene的mousePressEvent事件捕捉鼠标按下事件,得到鼠标按下时的坐标。 3. 在QGraphicsScene的mouseReleaseEvent事件捕捉鼠标松开事件,得到鼠标松开时的坐标。 4. 通过计算得到鼠标按下和松开时的坐标,得到一个矩形区域,并修改QGraphicsRectItem对象的位置和大小,让其显示出矩形区域。 在实现过程,还需要注意一些细节问题,比如要禁用QGraphicsView对象的rubberband selection功能,避免QGraphicsScene对象和QGraphicsRectItem对象大小的不一致等问题。 总之,利用QGraphicsScene实现画矩形并不难,只需要熟悉Qt的开发框架和API接口,灵活运用各种控件和事件,就可以实现各种复杂的图形界面效果。 ### 回答2: QGraphicsScene是一个用于创建2D图形的框架类,它是Qt GUI库的一部分。在QGraphicsScene,我们可以使用一系列图形项来组成图形场景。常见的图形项包括线条,矩形和文本等。 如果我们想在QGraphicsScene画矩形,可以使用QGraphicsRectItem类。创建一个矩形项的基本步骤如下: 1. 首先,我们需要创建一个QGraphicsScene对象,用于承载我们的矩形项: QGraphicsScene *scene = new QGraphicsScene(this); 2. 然后,创建一个QGraphicsRectItem对象: QGraphicsRectItem *rectItem = new QGraphicsRectItem(); 3. 设置矩形的位置、大小、颜色等属性: rectItem->setRect(x,y,width,height); rectItem->setPen(QPen(Qt::blue)); rectItem->setBrush(QBrush(Qt::red)); 4. 将矩形项添加到场景: scene->addItem(rectItem); 这样,我们就可以在QGraphicsScene画出一个红色填充、蓝色边框的矩形。 标注画矩形可以按下鼠标左键不松开,在对应的位置移动鼠标,形成一个矩形,拖动鼠标完成画矩形后,可以进行进一步的设置。设置包括矩形的大小、颜色、线框宽度等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值