Re: [Interest] Proper way to track mouse leaving a widgets boundary

2022-08-16 Thread Scott Bloom


Hey Scott,

This should be a job for a QWidget::leaveEvent override:

https://doc.qt.io/qt-6/qwidget.html#leaveEvent


Volker
==
How did I miss that in the 20 years of Qt coding??? dang
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] Proper way to track mouse leaving a widgets boundary

2022-08-16 Thread Volker Hilsheimer
> On 16 Aug 2022, at 18:45, Scott Bloom  wrote:
> 
> I have a QTextEdit derived class, that sets setMouseTracking( true ) in the 
> constructor.  Note, this isn’t about QTextEdit and should I use QTextBrowser. 
>  Ive had this issue multiple times over the last 20 years of Qt development, 
> and the solution has always been the same and I am not convinced it’s the 
> correct way.
>  
> When there is a mouseMoveEvent in which the anchor at the mouse position is 
> not empty, I override the cursor.
>  
> When the anchor at the point is empty, I restore the cursor
>  
> On mouseReleaseEvent I open the URL from the anchor.  
> 
> All works great (yes I know QTextBrowser should be able to be used, but there 
> are some issues with that, and its not the issue)
>  
> The problem is, when the mouse leaves the widget there isn’t a 
> “mouseLeaveEvent” so if the mouse is able to leave with the cursor 
> overridden, it stays overridden.
>  
> The workaround, I added a eventFilter on the parent widget.  If the parent 
> widget receives any event and the globalPos of the cursor (using 
> QCursor::pos() ) is outside the widget its restores the cursor.  It works, 
> however it seems a bit hackish
>  
> What is the “proper” methodology for tracking when a mouse leaves the widget? 
> Ive tried various methods through the years, and this is the way that I find 
> works
>  
> Full source for the widget can be found here
> https://github.com/towel42-com/SABUtils/blob/trunk/HyperLinkLineEdit.cpp
> https://github.com/towel42-com/SABUtils/blob/trunk/HyperLinkLineEdit.h
>  
> Thanks.
> 
> Scott


Hey Scott,

This should be a job for a QWidget::leaveEvent override:

https://doc.qt.io/qt-6/qwidget.html#leaveEvent


Volker

___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest