问:如何在QFormLayout中悬停行时收到通知?

时间:2010-09-25 18:35:17

标签: qt layout

我有一个QFormLayout,其中左侧小部件是QLabel,右侧小部件是各种类型的。我想在鼠标进入表格行的任何部分时收到通知,这样我就可以在状态栏中显示该行的说明。

目前我有一个名为HoverableLabel的QLabel子类,它暴露了“mouseEntered”和“mouseLeft”信号(在我重新实现的enterEvent和leaveEvent中发出)。这有效,但是:

  • 行之间的边距不会触发信号
  • (右对齐)标签左侧的空格不会触发信号
  • 右边的小部件不会触发信号,因为我没有打扰所有的子类

这种问题的Qt-blessed方法是什么?

我能想到的一些事情:

  1. 让formlayout的父窗口小部件过滤所有mousemove事件(鼠标跟踪?),并检查鼠标是否已进入某行。
  2. 将formlayout更改为QVBoxLayout,并将行设置为一些自定义窗口小部件,如FormRowWidget,它处理悬停事件和表单对齐内容。
  3. 两者都不是很好。

1 个答案:

答案 0 :(得分:0)

我最终使用了两种解决方案中的第一种。足够好,通过一些工作,它可以被隔离成QFormLayout的可重用子类。