У меня есть пользовательское устройство ввода и встроенная система, и вам нужно перевести вход в соответствующие события в Qt. В моем текущем представлении у меня есть QListView и некоторые QPushButtons. Я использую следующий код в своем виджетах.Как эмулировать QPushButton в Qt с QEvents
QKeyEvent * e = NULL;
if (cmd.up.value)
e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Up, 0, 0);
else if (cmd.down.value)
e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Down, 0, 0);
else if (cmd.left.value)
e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Left, 0, 0);
else if (cmd.right.value)
e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Right, 0, 0);
else if (cmd.ok.value)
e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Space, 0, 0);
if (e)
QApplication::postEvent(this->focusWidget(), e);
Я могу перемещаться вверх/вниз/вправо/влево между списком и кнопками, но я не могу нажать на кнопки. Я пробовал использовать Qt :: Key_Enter и Qt :: Key_Return, но не работает.
Если вы запускаете приложение на моем компьютере, пробел или левую кнопку мыши на моей клавиатуре дает щелчок на кнопке. Это означает, что где-то, событие изменилось на то, что кнопка понравилась лучше, чем получить Qt :: Key_Space прямо, не так ли?
У кого-нибудь есть идея, как я могу это решить? Я могу проверить, какие (если таковые имеются) кнопка имеет фокус и нажмите на нее вручную, но это не очень элегантный кодирования ...
Вы пытаетесь с помощью QMouseEvent отправить сообщение мышью на кнопку? – Chris
Есть ли какая-то проблема с моим ответом? Скажите, есть ли, я мог бы помочь больше. – 0xbaadf00d