QKeyPress - Имитация нажатия клавиш в Qt
Как я могу имитировать взаимодействие с пользователем (событие нажатия клавиши) в 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 ответ
Решение
В ссылке вы указываете, что ввод дается, поэтому текст не обязателен, но в случае, если вы хотите отправить письмо, вы должны передать этот параметр:
ui->lineEdit->setFocus();
QKeyEvent *key_press = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_X, Qt::NoModifier, "X");
// text ─────┘
QApplication::sendEvent(ui->lineEdit, key_press);