QKeyPress - Simulating key press in Qt

3.9k views Asked by At

How can I simulate user interaction (key press event) in Qt?

I tried the same approach, but not able to get written on the lineEdit widget

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

Alternately

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

also didn't succeed.

I tried the below also and didn't get any result.

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";
}

Please suggest what am I missing.

Regards, Sayan

1

There are 1 answers

2
eyllanesc On BEST ANSWER

In the link you indicate an enter is given so the text is not necessary, but in the case you want to send a letter you must pass that parameter:

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