gpt4 book ai didi

c++ - QT QcoreApplication postEvent() 行为

转载 作者:行者123 更新时间:2023-11-28 04:51:13 29 4
gpt4 key购买 nike

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

下面代码中的第 1 部分似乎不起作用(我没有在 QLineEdit 字段中打印 key ;而第 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!

}

最佳答案

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

QLineEdit 只会添加文本,而不是从事件类型中推导出它(可以看出 here )

关于c++ - QT QcoreApplication postEvent() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192091/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com