PDA

View Full Version : Complex menus are more difficult to operate in Qt4 than they were in Qt3.



philw
23rd April 2009, 21:38
In Qt3, clicking on a submenu handle had caused the submenu to REMAIN VISIBLE until clicking again -- either inside that submenu or somewhere else (or -- on Windows -- until hovering over a top-level menu, but that was relatively easy to avoid).

In Qt4 on Windows, clicking on a submenu handle does bring up the submenu, but the submenu disappears when the mouse is MOVED outside of both the current menu and the submenu. This is quite the "video game experience" with multi-tiered menus. This is a Qt4 problem on Windows, but not on Solaris. [Qt 4.4.3].

Qt4 on Solaris has optimal behavior. (and hovering over a top-level menu after "clicking open" an unrelated submenu doesn't hide that submenu. That's really good).

Can anyone confirm these observations?

And is there anything we can do programmatically in Qt4 on Windows to restore the "sticky" behavior?

wysota
23rd April 2009, 22:37
How do menus in other (non-Qt) applications behave? Do they have the "sticky behaviour"?

philw
23rd April 2009, 23:28
How do menus in other (non-Qt) applications behave? Do they have the "sticky behavior"?

Taking a quick look, I haven't found any other Windows applications which have the "sticky behavior" which we liked very much in Qt3 on Windows. There are subtle differences in the behaviors I'm seeing. If you're making the point that the new Qt4 Windows behavior is more consistent with Windows applications in general, you are right. Regardless, we'd be interested to hear if the old Qt3 Windows behavior can be made available.

(Or, are you suggesting that there is a general Windows setting which changes this behavior? Our users are generally on Windows XP and Vista).

Thank you.

wysota
24th April 2009, 22:41
Qt tries to integrate with the platform and follow platform guidelines so I was suggesting this is an expected change. Try running your application with a different widget style (like "Plastique") and see if it changes anything. If it does then you can modify the behaviour of your application by subclassing the style and returning some different data in a proper place. If not then without digging deeper it will probably not be possible.