Hello,
I am using QT4.5.3 open source version on Windows XP, using MSVC6.0 compiler.
There is a request for my application to activate(set focus to) the existing QMenuBar on a main dialog even if the focus is currently on another (non modal) dialog.
Note that the parent of the QMenuBar is a QFrame not a QMainWindow widget. When focus is set to the first dialog the behaviour is correct when ALT key is pressed, but when focus is at other dialog (the one without QMenuBar on it) the ALT key does nothing.
I have managed to set eventFilter for all the widgets on the non modal window and I am able to detect that a key is pressed and identify it, but I am not able to find the code to activate the QMenuBar the way it is done by <Alt> key in windows.
I have tried to use QMenuBar::setFocus() or its child menu QMenu::setFocus, but it does not do anything useful.
I have also tried to use
SendMessage(wndId, WM_KEYDOWN, VK_MENU, NULL);
SendMessage(wndId, WM_KEYUP, VK_MENU, NULL);
or
SendMessage(wndId, WM_SYSCOMMAND, SC_KEYMENU, NULL);
I have checked in WinSpy and it seems that the win messages sequence on a standard windows dialog is completely different from the sequence that is received by dialog window generated by QT.
Is there any way I can programaticly simulate the behaviour performed by QT Core when the ALT key is pressed in windows?
Bookmarks