[Qt-interest] Events and objects...

Tony Rietwyk tony.rietwyk at rightsoft.com.au
Wed Feb 9 02:37:56 CET 2011


> Sent: Wednesday, 9 February 2011 10:38
> 
> I'm revisiting a problem I partially solved a while ago per 
> layouts and snapping 
> widgets in and out. The old solution derived from QGridLayout 
> and required a 
> customized widget to interact with it; however, it is 
> problematic in that it 
> does not always clear out the columns. I had thought of a 
> couple other 
> approaches, one of which I am now attempting, but I find 
> there may be a 
> problem...
> 
> Original Approach
> - Derive a new object that checks the mouse double click 
> event. The new object 
> basically just says if it has a parent, then pop it out; 
> otherwise, pop it back 
> in.
> - Derive a new sub layout from QGridLayout that receives a 
> signal on the pop 
> in/out events to do so; adding/removing it as appropriate, 
> and keeping track of 
> removed widgets.
> - If a widget is removed, then free up the grid above it so 
> things can slid up 
> (primarily done only when everything is remove from the display).
> 
> New Approach 1
> - Instead of using QGridLayout, derive from QLayout.
> - Use a master QHBoxLayout to manage the columns with each 
> column having its own 
> QVBoxLayout
> - Add/remove items to each column as desired via 
> insertWidget() to get it in the 
> right spot.
> - Logic for the pop in/pop out is still in the layout
> 
> New Approach 2
> - Like New Approach 1 but use the approach of QMdiArea
> - Instead of using a specialized QWidget to like in the 
> Original Approach, use a 
> custom QWidget (aka QSubWidget) that manages a single normal QWidget.
> - Manage the pop in/out from the QSubWidget
> 
> I'd really like to do New Approach 2 as it makes the whole 
> thing a little more 
> generic - and my other widgets don't need to be specifically 
> derived from the 
> custom widget, as done in my original approach.
> However, to do so the QSubWidget needs to have access to the 
> mouse double-click 
> event from the normal QWidget - which at least in Qt 4.5 is a 
> protected virtual 
> function.
> My question is - without requiring something to be 
> specifically derived from a 
> specific class, is there a way to access the mouse 
> double-click events of 
> another widget?
> 
> I basically need to just know when a double click happens - 
> even if there was an 
> associated signal with the double click it would suffice.
> 
> Or is there a better approach?
> 
> TIA,
> 
> Ben

Use widget->installEventFilter(subWidget) for subWidget to listen for the
double-clicks on the widgets. 

Hope that helps, 

Tony




More information about the Qt-interest-old mailing list