键盘驱动可以读到扫描码,但是textEdit却无法响应。
我自定义键盘驱动,在驱动中可以读到扫描码,然后调用:
processKeyEvent(0, Qt::Key_A, 0, 1, false); //这里我测试都是使用键码A。
在应用程序中,确实收到了键盘消息,整个窗口mainwindow的keyPressEvent有响应。
但是此时焦点在textEdit上,textEdit就是不响应键盘,不输出A。
何解?请指点下,谢谢。
[解决办法]
QKeyEvent e(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, QChar(Qt::Key_A));
QApplication::sendEvent(w, &e);
问题可能是, 你给出了键码Qt::Key_A, 但没有给出它对应的文本QChar(Qt::Key_A),
QKeyEvent的第四个参数
[解决办法]
楼上说的有道理:
QKeyEvent v(QEvent::KeyPress,Qt::Key_A, Qt::NoModifier,QString("a"));
QCoreApplication::sendEvent(ui->textEdit, &v);
这样就可以写出一个a了
QKeyEvent e(QEvent::KeyPress,Qt::Key_A,Qt::ControlModifier);
QCoreApplication::sendEvent(ui->textEdit,&e);
这样可以全选(CTRL+A)