如何检查 QGraphicsTextItem 文本中wheelEvent 的位置?
我有一个接受鼠标事件的 QGraphicsTextItem
子类(即实现 wheelEvent()
方法)。
如何检查轮子事件发生在文本中的哪个位置?我想获取滚轮事件发生时鼠标指针指向的字母
:一种可能的解决方案是创建一系列 QGraphicsTextItem
对象 - 每个字母都可以接受。事件,但我放弃了所有的字距调整和其他排版复杂性。
I have a QGraphicsTextItem
subclass that accepts mouse events (i.e. implements wheelEvent()
method.
How can I check on which position within the text the wheel event happened? I would like to get the letter that the mouse pointer pointed at when the wheel event happened.
BTW: one possible solution is to create a series of QGraphicsTextItem
objects -- one for every letter. This way each letter can accept it's own events, but I loose all the kerning and other typesetting sophistication.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要获取鼠标位置,可以使用 QWheelEvent::pos。
我没有看到任何 API 可以在项目中的给定 QPointF 处获取字母。你可以尝试使用 QFontMetricsF 获得一个可能足够好的近似值,做类似的事情
如果这不起作用,你可以尝试使用自定义文本项,你自己进行绘画(QPainter::drawText),这样你就有更多控制文本在项目坐标系中的位置。
To get the mouse position, you can use QWheelEvent::pos.
I don't see any API to get the letter at a given QPointF in the item. you could try to get a maybe good enough approximation using QFontMetricsF though, doing something like
If that doesn't work out, you could try with a custom text item where you do the painting (QPainter::drawText) yourself, so you have more control over the positioning of the text in the item's coordinate system.