首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Qt发送keyPressEvent

Qt发送keyPressEvent
EN

Stack Overflow用户
提问于 2014-06-20 15:59:10
回答 3查看 11.2K关注 0票数 5

我想通过发送KeyEvent将字符附加到QLineEdit。我使用的代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
ui.myEdit->setFocus();
for(size_t i = 0; i < 10; ++i) {
   QKeyEvent keyPressed(QKeyEvent::KeyPress, 'a', Qt::NoModifier);
   QWidget::keyPressEvent(&keyPressed); // or
   //QApplication::sendEvent(QApplication::focusWidget(), &keyPressed);
}

为什么myEdit没有变化

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-20 19:13:01

您可以简单地通过以下方式更改更改QLineEdit的文本:

代码语言:javascript
代码运行次数:0
运行
复制
ui->myEdit->setText(ui->myEdit->text().append("a"));

但是如果你真的想通过发送QKeyEvent来改变它,你可以尝试这样做:

代码语言:javascript
代码运行次数:0
运行
复制
QKeyEvent * eve1 = new QKeyEvent (QEvent::KeyPress,Qt::Key_A,Qt::NoModifier,"a");
QKeyEvent * eve2 = new QKeyEvent (QEvent::KeyRelease,Qt::Key_A,Qt::NoModifier,"a");

qApp->postEvent((QObject*)ui->myEdit,(QEvent *)eve1);
qApp->postEvent((QObject*)ui->myEdit,(QEvent *)eve2);
票数 6
EN

Stack Overflow用户

发布于 2014-06-20 18:28:50

你的方法是不明智的。

  1. 自己设置焦点可能会使多个用户感到恼火,这些用户会将焦点从一个UI元素上移到另一个UI元素上。
  2. 通过直接调用keyPressEvent,您可以跳过框架中的许多层处理。只有行为不端才会沿着这条路走下去。

回复

我想向QLineEdit追加字符

您可以获取行编辑文本,按您的意愿修改并将其设置回去。

代码语言:javascript
代码运行次数:0
运行
复制
QString currentText = ui.myEdit->text();
QString toappend    = "aaaaaaaaaa";
QString nextText    = currentText + toappend;
ui.myEdit->setText(nextText);

或一行

代码语言:javascript
代码运行次数:0
运行
复制
ui.myEdit->setText(ui.myEdit->text()+mystring);
票数 1
EN

Stack Overflow用户

发布于 2014-06-20 22:20:07

合成一个按键事件以将字符附加到行编辑中,这会带来无尽的麻烦。您需要保留控件的状态,以确保您实际上是在追加字符。如果光标不在末尾,您将插入或添加字符。如果有任何修改器处于活动状态,您可能会使小部件表现得就像激活了剪贴板快捷方式一样。比方说,如果在按住Ctrl/⌘的同时“追加”一个X,则会导致任何选定的文本从行编辑中消失。

换句话说:如果你想在textedit中添加一些东西,只需简单地添加它,而不是合成击键。

代码语言:javascript
代码运行次数:0
运行
复制
lineEdit->setText(lineEdit->text() + "appended");

就这样。要通过附加击键来正确地完成这项工作,需要大约一页代码,即使这样,它也只能依赖于Qt的实现细节。

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

https://stackoverflow.com/questions/24322602

复制
相关文章

相似问题

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