假设我在包含QPixmap的QLabel中的(x,y)位置绘制了简单文本(比如字母'x')和一些字体参数(如大小20字体等)。当一个点击“精确地”发生在这些绘制的x之一上时,我需要覆盖哪些相关方法来检测鼠标事件。
我的第一直觉是查找绘制点的存储(x,y)位置,如果鼠标当前位置位于该(x,y)位置周围的小盒子内,那么我将执行一些功能,例如允许用户调整该点,如果没有,则执行正常的鼠标事件功能。然而,我正在与之交互的点是人脸上的跟踪特征,如眼睛等。通常,当有人用相机等以奇怪的角度转动时,两个不同的跟踪点几乎可以在每个上面。其他。因此,无论用户如何关注所需的关键点,如果鼠标事件处理中的逻辑标准存在一定的容差,则会出现逻辑认为点击两个不同点的情况。
我希望尽量减少此类问题,而不会对点击条件产生不合理的精确度。是否存在一些根本不同的方式来解释文本的选择(例如,当文本被绘制到像素图时,是否会成为该像素图的任何类型的属性,它知道文本已经被绘制在(x,y)并且因此用户必须尝试点击什么?)
非常感谢PyQT中有关此类事情的任何建议或示例。
答案 0 :(得分:0)
虽然您在上一个问题中提到了您的用户互动计划,但现在很明显Graphics View Framework可能更适合您要执行的操作。
这与小部件中的绘图明显不同。使用此框架,您可以创建由图形项(QGraphicsItem子类)组成的场景,然后将场景分配给视图。通过视图,您可以与场景中的项目进行交互。他们可以生成点击事件甚至被拖动。文档很广泛,看起来很复杂,但从概念上讲,我认为它更容易理解。