Problems with joystick and mouse events
-
Hi,
in my Qt application I've to substitute the mouse with a joystick. I've implement the cursor's movement and the left/right click. To simulate the mouse click I've connect the joystick buttons press/release signal to a slot that create a QMouseEvent and send it to the widget under the cursor. This work for some widget but not for others; in particular:- On QComboBox I can open the dialog and select and item but if I click outside the combobox the dialog stay open.
- On QSpinBox if the click is on the lineedit to select it I have to use setFocus on it.
- On QMainWindow the right click doesn't show the popup menu for the dock widget.
The slot to manage the joystick button press is this:
@void DisplayWindow::joystickButtonPressed(int button)
{
QPoint cursor_position = QCursor::pos();
QWidget *widget_under_cursor = QApplication::widgetAt(cursor_position);
if (!widget_under_cursor)
return;QPoint coordinate = widget_under_cursor->mapFromGlobal(cursor_position); Qt::MouseButton button_pressed; switch (static_cast<Joystick::JoystickButton>(button)) { case Joystick::BUTTON_4: button_pressed = Qt::LeftButton; break; case Joystick::BUTTON_5: button_pressed = Qt::RightButton; break; } QMouseEvent *event = new QMouseEvent(QEvent::MouseButtonPress, coordinate, button_pressed, button_pressed, Qt::NoModifier); QApplication::postEvent(widget_under_cursor, event);
}@
The release SLOT is equal to this one, the only difference is that I create a QMouseEvent with type QEvene::MouseButtonRelease
I'm working on Windows 7 64 bit and I use Qt 4.7.4
Thanks for your help