use*_*485 5 c++ qt key-events keypress qkeyevent
我想QLineEdit通过发送 KeyEvent来附加字符。我正在使用这样的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
为什么没有变化myEdit?
您可以通过以下方式更改更改文本QLineEdit:
ui->myEdit->setText(ui->myEdit->text().append("a"));
Run Code Online (Sandbox Code Playgroud)
但如果你真的想通过发送来改变它,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);
Run Code Online (Sandbox Code Playgroud)