【发布时间】:2018-01-10 16:36:28
【问题描述】:
我已经编写了这个简单的 QT 主窗口,只有当我将 QString 参数传递给 QKeyEvent 时,它才会打印密钥,我希望即使没有 QString 参数也能打印密钥?
下面代码中的第 1 部分似乎不起作用(我没有在 QLineEdit 字段中打印密钥;而第 2 部分有效并且打印了“1”!这是正常行为吗?当事件发生时会发生什么情况?贴在代码的第一部分?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->ui->lineEdit->setFocus();
Qt::Key key = Qt::Key_1;
// 1
QKeyEvent *event = new QKeyEvent (QEvent::KeyPress, key ,Qt::NoModifier);
QCoreApplication::postEvent(QWidget::focusWidget(), event); // Does not work! No key is set in the widget
//
//2
QKeyEvent *event2 = new QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
QCoreApplication::postEvent(QWidget::focusWidget(), event2); // this one works!
}
【问题讨论】:
-
我观察到与键和
sendEvent类似的行为。例如,Key_Backspace有效,但Key_A无效。另请参阅How to use QCoreApplication::postEvent to inject synthetic input events。
标签: c++ qt qcoreapplication