1

假设我已经将带有一些字体参数(如大小 20 字体等)的简单文本(比如字母“x”)绘制到包含 QPixmap 的 QLabel 中的 (x,y) 位置。当单击“精确”发生在这些绘制的 x 之一上时,为了检测鼠标事件,我需要覆盖哪些相关方法。

我的第一直觉是查找已存储的 (x,y) 绘制点位置,如果鼠标当前位置在该 (x,y) 位置周围的小盒子内,那么我将执行一些功能,例如允许用户调整那一点,如果没有,则执行正常的鼠标事件功能。但是,我正在与之交互的点是人脸上的跟踪特征,例如眼睛等。通常,当有人以奇怪的角度与相机等转动时,两个不同的跟踪点可能几乎就在每个跟踪点的顶部其他。因此,无论用户如何专注于所需的关键点,如果在鼠标事件处理中的逻辑标准存在一定的容差,就会出现逻辑认为正在单击两个不同点的情况。

我想尽量减少这类问题,而不会对点击标准造成不合理的精确度。是否有一些根本不同的方式来解释文本的选择(例如,当文本被绘制到像素图时,是否有任何类型的像素图属性知道文本已在 (x,y) 处绘制,所以这就是用户必须尝试点击什么?)

PyQT 中此类事情的任何建议或示例将不胜感激。

4

1 回答 1

0

尽管您在上一个问题中提到了您的用户交互计划,但现在很明显,图形视图框架可能更适合您尝试做的事情。

这与在小部件中绘图明显不同。使用此框架,您可以创建由图形项(QGraphicsItem 子类)组成的场景,然后将场景分配给视图。通过视图,您可以与场景中的项目进行交互。它们可以生成点击事件,甚至可以被拖动。文档很广泛,看起来很复杂,但从概念上讲,我认为它更容易理解。

于 2011-06-03T01:44:28.213 回答