QKeyPress - Имитация нажатия клавиш в Qt - PullRequest
0 голосов
/ 03 октября 2018

Как я могу имитировать взаимодействие с пользователем (событие нажатия клавиши) в Qt?

Я пробовал тот же подход, но не смог написать в виджете lineEdit

ui->lineEdit->setFocus();
QKeyEvent *key_press = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_X, Qt::NoModifier);
QApplication::sendEvent(ui->lineEdit, key_press);

Альтернативно

QApplication::postEvent(ui->lineEdit, key_press);

также не удалось.

Я также попробовал следующее и не получил никакого результата.

QKeyEvent key(QEvent::KeyPress, Qt::Key_X, Qt::NoModifier);
QApplication::sendEvent(ui->lineEdit, &key);
if (key.isAccepted()) {
      qDebug()<<"everything is ok";
} else {
      qDebug()<<"something wrong";
}

Пожалуйста, предложитечто я упускаю.

С уважением, Саян

1 Ответ

0 голосов
/ 03 октября 2018

В ссылке, которую вы указываете, указан ввод, поэтому текст не требуется, но в случае, если вы хотите отправить письмо, вы должны передать этот параметр:

ui->lineEdit->setFocus();
QKeyEvent *key_press = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_X, Qt::NoModifier, "X");
//                                                                          text ─────┘
QApplication::sendEvent(ui->lineEdit, key_press);
...