c++ - Qt 发送 keyPressEvent

标签 c++ qt keypress key-events qkeyevent

我想通过发送 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);

关于c++ - Qt 发送 keyPressEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24322602/

相关文章:

c++ - Lambda 表达式在 if 语句中返回 bool

ruby - 按 T​​AB 键,然后在带有 Ruby 的 Selenium WebDriver 中按 ENTER 键

c++ - 微软的OpenMP自旋锁时间如何控制?

c++ - 无法计算字符串中的字符数

c++ - 使用堆叠矩阵绘制立方体

c++ - 寻找 Qt SMPP 客户端

qt - 删除 QNetworkAccessManager::post 返回的 'QNetworkReply *'

qt - 自定义 Qt Widget 实例化但不显示

javascript - 当鼠标在我的页面之外时如何捕捉按下的 F5 键?

Javascript 在平板电脑上读取按键?