2010-09-25 71 views
4

我有一個QFormLayout,左邊的小部件是QLabels,右邊的小部件是各種類型的。我希望在鼠標進入任意部分時得到通知,因此我可以在狀態欄中顯示該行的解釋。Qt:如何在QFormLayout中徘徊一行時得到通知?

目前我有一個叫做HoverableLabel的QLabel子類,它暴露了「mouseEntered」和「mouseLeft」信號(在我的enterEvent和leaveEvent的重新實現中發出)。這工作,但:

  • 行之間的利潤率不觸發信號
  • 空間上(右對齊)標籤的左邊不上觸發信號
  • 窗口小部件因爲我沒有打擾到子類他們的所有

什麼是Qt的祝福的做法對這類問題的正確不觸發信號?

有些事情我能想到的:

  1. 充分利用的FormLayout的母公司是過濾所有鼠標移動事件的窗口小部件(鼠標跟蹤?),並檢查是否鼠標已經進入了一些列。
  2. 將formlayout更改爲QVBoxLayout,並將行放入一些自定義小部件(如FormRowWidget)中,該小部件可同時處理懸停事件和窗體對齊內容。

兩者都不是很好。

+0

提示:添加您的解決方案作爲答案,並接受它,如果你自己解決了你的問題。 – Macke 2010-10-26 20:29:40

回答

0

我最終使用了兩種解決方案中的第一種。足夠好,通過一些工作,它可以被分離成QFormLayout的可重用子類。