首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT QcoreApplication postEvent()行为

QT QcoreApplication postEvent()行为
EN

Stack Overflow用户
提问于 2018-01-11 00:36:29
回答 1查看 740关注 0票数 0

我已经写了这个简单的QT主窗口,只有当我将QString参数传递给QKeyEvent时,它才会打印密钥,我希望即使没有QString参数也可以打印密钥?

下面代码中的第1节似乎不起作用(我没有在QLineEdit字段中打印密钥;而第2节起作用了,并且打印了"1“!这是正常行为吗?当事件发布在代码的第一部分时,会发生什么?

代码语言:javascript
复制
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! 

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-11 01:02:18

并非所有的按键事件都有文本表示(删除、光标移动、快捷键等)。对于那些拥有它的人来说,QKeyEvent类将它存储在它的文本中。你必须提供该文本,否则它是一个“无文本”事件。

QLineEdit只会添加文本,而不会从事件类型中推导出它(如here所示)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48192091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档