【问题标题】:QKeyPress - Simulating key press in QtQKeyPress - 在 Qt 中模拟按键
【发布时间】:2018-10-03 04:44:42
【问题描述】:

How can I simulate user interaction (key press event) in Qt?

我尝试了相同的方法,但无法在 lineEdit 小部件上写入

ui->lineEdit->setFocus();
QKeyEvent *key_press = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_X, Qt::NoModifier);
QApplication::sendEvent(ui->lineEdit, key_press);

交替

QApplication::postEvent(ui->lineEdit, key_press);

也没有成功。

我也尝试了以下方法,但没有得到任何结果。

QKeyEvent key(QEvent::KeyPress, Qt::Key_X, Qt::NoModifier);
QApplication::sendEvent(ui->lineEdit, &key);
if (key.isAccepted()) {
      qDebug()<<"everything is ok";
} else {
      qDebug()<<"something wrong";
}

请建议我缺少什么。

问候, 萨彦

【问题讨论】:

    标签: c++ qt5.7 qkeyevent


    【解决方案1】:

    在链接中,您表示输入已给出,因此文本不是必需的,但如果您想发送一封信,您必须传递该参数:

    ui->lineEdit->setFocus();
    QKeyEvent *key_press = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_X, Qt::NoModifier, "X");
    //                                                                          text ─────┘
    QApplication::sendEvent(ui->lineEdit, key_press);
    

    【讨论】:

    • 这是一个示例代码。我实际上是在尝试在某个 openGL 查看器上模拟 Key x 按下,该查看器具有“x”按下事件的功能。我需要在按钮 click() 而不是“x”按下时做同样的事情。因此,尝试模拟在按钮的 clicked() 插槽中按“x”所做的相同功能。
    • 嘿...我可以通过将最后一个参数添加为“x”来实现输出。
    猜你喜欢
    • 2012-02-15
    • 2020-05-02
    • 2011-01-03
    • 2021-03-07
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2018-08-16
    相关资源
    最近更新 更多