簡體   English   中英

問:如何在QFormLayout中懸停行時收到通知?

[英]Qt: How to be notified when a row is hovered in a QFormLayout?

我有一個QFormLayout,左邊的小部件是QLabel,右邊的小部件是各種類型的。 我想在鼠標進入表格行的任何部分時收到通知,因此我可以在狀態欄中顯示該行的說明。

目前我有一個名為HoverableLabel的QLabel子類,它暴露了“mouseEntered”和“mouseLeft”信號(在我重新實現的enterEvent和leaveEvent中發出)。 這有效,但是:

  • 行之間的邊距不會觸發信號
  • (右對齊)標簽左側的空間不會觸發信號
  • 右邊的小部件不會觸發信號,因為我沒有費心去分類所有這些信號

什么是Qt祝福這種問題的方法?

我能想到的一些事情:

  1. 使formlayout的父窗口小部件過濾所有mousemove事件(鼠標跟蹤?)並檢查鼠標是否已進入某行。
  2. 將formlayout更改為QVBoxLayout,並將行設置為一些自定義窗口小部件,如FormRowWidget,它處理懸停事件和表單對齊的內容。

兩者都不是很好。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM