我想通过发送KeyEvent将字符追加到QLineEdit
我正在使用这样的代码:

ui.myEdit->setFocus();
for(size_t i = 0; i < 10; ++i) {
   QKeyEvent keyPressed(QKeyEvent::KeyPress, 'a', Qt::NoModifier);
   QWidget::keyPressEvent(&keyPressed); // or
   //QApplication::sendEvent(QApplication::focusWidget(), &keyPressed);
}

为什么myEdit没有变化?

最佳答案

您可以通过以下方法简单地更改QLineEdit的文本:

ui->myEdit->setText(ui->myEdit->text().append("a"));

但是,如果您真的想通过发送QKeyEvent进行更改,则可以尝试以下操作:
QKeyEvent * eve1 = new QKeyEvent (QEvent::KeyPress,Qt::Key_A,Qt::NoModifier,"a");
QKeyEvent * eve2 = new QKeyEvent (QEvent::KeyRelease,Qt::Key_A,Qt::NoModifier,"a");

qApp->postEvent((QObject*)ui->myEdit,(QEvent *)eve1);
qApp->postEvent((QObject*)ui->myEdit,(QEvent *)eve2);

10-08 08:49