当前位置: 代码迷 >> QT开发 >> 键盘驱动可以读到扫描码,但是textEdit却无法响应。该怎么解决
  详细解决方案

键盘驱动可以读到扫描码,但是textEdit却无法响应。该怎么解决

热度:1050   发布时间:2016-04-25 05:14:44.0
键盘驱动可以读到扫描码,但是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)