qt中drawline函数的参数_在Qt GraphicsView中创建长线(或十字线)光标的最佳方法...

本文介绍如何在Qt环境中通过自定义GraphicsScene和GraphicsView来创建一个动态的交叉线光标。通过开启鼠标跟踪,监听mouseMoveEvent,将鼠标位置转换为场景坐标,并在drawForeground()方法中绘制水平和垂直线,实现光标位置的实时更新。
摘要由CSDN通过智能技术生成

如果我理解正确,您想绘制水平线和垂直线,在光标位置交叉,并且与视口一样大。

问题是,场景不知道鼠标的位置。这意味着视图必须跟踪它并在鼠标位置发生变化时通知场景。

要做到这一点,您必须创建自己的GraphicsScene(继承QGraphicsScene)和您自己的GraphicsView(继承QGraphicsView)。

在您的GraphicsView构造函数中,您必须开始鼠标跟踪。这将使您会收到一个mouseMoveEvent每个视图内的鼠标移动时间:

GraphicsViewTrack::GraphicsViewTrack(QWidget* parent) : QGraphicsView(parent) {

setMouseTracking(true);

}

void GraphicsViewTrack::mouseMoveEvent(QMouseEvent* pEvent) {

QPointF MousePos = this->mapToScene(pEvent->pos());

emit mousePosChanged(MousePos.toPoint());

}

正如可以在上面的代码段看到,该视图发射的信号(mousePosChanged)的场景将被连接到。该信号包含鼠标位置,转换为场景的坐标。现在

,在场边,你必须添加一个当鼠标位置变更后,将被称为插槽,存储在一个成员变量的新鼠标位置并重新实现QGraphicsScene::drawForeground():

void GraphicsSceneCross::drawForeground(QPainter* painter, const QRectF&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值