Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Qt发送keyPressEvent

Qt发送keyPressEvent
EN

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 11:13:01

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 10:28:50

你的方法是不明智的。

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

回复

我想向QLineEdit追加字符

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

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

或一行

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

Stack Overflow用户

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

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

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

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

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

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

https://stackoverflow.com/questions/24322602

复制
相关文章
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
最近做一个播放器的项目,需要用户自定义编辑定制视频的字幕;为了方便编辑字幕,这里QGraphicsTextItem需要支持任意拖动,回车确认,鼠标双击进入编辑状态,右键弹出菜单(剪切、复制、删除、全选)等操作。
DS小龙哥
2022/01/07
2.8K0
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
Qt键盘事件(一)——检测按键输入
本节Jungle实现一个简单的功能:键盘按下某个键,Qt界面上显示出Jungle按下的是哪个键。
用户6557940
2022/07/24
3.1K0
Qt键盘事件(一)——检测按键输入
Qt 项目之虚拟键盘 V1.0
一般我在做一个东西之前会上网查找资料,看下有几种实现的方式。在Qt下开发虚拟键盘总体上可分为两种方式——进程内部和进程外部。
用户5908113
2019/09/24
3K0
Qt 项目之虚拟键盘 V1.0
Qt键盘事件(二)——长按按键反复触发event事件问题解决
Qt键盘事件可能会遇到无法响应方向键、一直产生按下或者释放事件等问题,如何解决呢?Jungle笔记为您解答。
用户6557940
2022/07/24
4.3K0
Qt键盘事件(二)——长按按键反复触发event事件问题解决
Qt设计机器人仿真控制器——按键控制机器人关节转动
在上两篇博客里,Jungle介绍了Qt键盘事件,并在小程序中应用Qt键盘事件监测按键输入:
用户6557940
2022/07/24
1.1K0
Qt设计机器人仿真控制器——按键控制机器人关节转动
Qt软键盘-发送按键事件
发送按键事件到当前聚焦的窗体。 1.获取当前聚焦的QWidget QWidget *receiver = QApplication::focusWidget(); qDebug()<<"Send key event to focus widget "<<receiver->objectName(); 2.装载press与release事件 key为按键键值(整型); value为按键实际值(QString). QKeyEvent keyPress(QEvent::KeyPress, key, Qt:
Qt君
2019/07/15
3K0
Qt - 聊天室发送图片/文件
其中,关键点为,tcp在实际的场景中,会遇到拆包,丢包,沾包等一些意外的情况,当图片文件比较大的时候,tcp的单帧数据有限,必然会发生拆包现象,所以我们在接收时需要考虑从组包的情况,把完整的图片数据提取出来。
何其不顾四月天
2023/03/10
8730
Qt - 聊天室发送图片/文件
Qt官方示例-图表缩放
  然后,我们为鼠标和按键事件实现自定义逻辑。例如,按"+"键将放大,而按"-"键将缩小。
Qt君
2020/07/02
2.1K0
Python小游戏(俄罗斯方块)
玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的。 源码分享: import os import sys import random from modules import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * '''定义俄罗斯方块游戏类''' class TetrisGame(QMainWindow): def __init__(self, pa
红目香薰
2022/11/29
5320
Python小游戏(俄罗斯方块)
[QT]响应键盘事件(附虚拟键值转换函数)
原文链接:https://blog.csdn.net/humanking7/article/details/80700233
祥知道
2020/03/10
3.3K0
事件与信号
所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,当然也有其他的事件产生方式,比如网络的连接,窗口管理器或者定时器等。调用应用的exec_()方法时,应用会进入主循环,主循环会监听和分发事件。
小飞侠xp
2018/12/24
1.2K0
19.QT-事件发送函数sendEvent()、postEvent()
Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: bool QApplication::sendEvent ( QObject * receiver, QEvent * event ) ; // receiver:接收对象, event :要发送的event类型(比如:鼠标双击) //当有事件发送,将会
诺谦
2018/07/31
1K0
19.QT-事件发送函数sendEvent()、postEvent()
Qt官方示例-广播发送器
❝本示例使用Qt Network API演示如何通过本地网络向多个客户端广播消息。❞   总结了下该例子的使用方法: 创建UDP套接字。 udpSocket = new QUdpSocket(this); 绑定定时器,用于定时发送广播事件。 connect(&timer, &QTimer::timeout, this, &Sender::broadcastDatagram); 使用QUdpSocket的writeDatagram函数的QHostAddress::Broadcast参数实现广播发送数据的功能。
Qt君
2020/06/01
1K0
为了上班摸鱼我用Python制作了俄罗斯方块?
首先零基础是能学python的,很多编程大神入门之前都选择先学习Python,所以想学就大胆去学吧,没学之前谁不是零基础,就算是现在才下定决心学也不怕,学习Python什么时候都不算晚。
yz_weixiao
2022/01/04
4450
python pyqt5 捕获鼠标键盘事件
import sys from PyQt5.QtCore import (QEvent, QTimer, Qt) from PyQt5.QtWidgets import (QApplication, QMenu, QWidget) from PyQt5.QtGui import QPainter
用户5760343
2019/07/22
4.2K0
19.QT-事件发送函数sendEvent()、postEvent()
Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: bool QApplication::sendEvent ( QObject * receiver, QEvent * event ) ; // receiver:接收对象, event :要发送的event类型(比如:鼠标双击) //当有事件发送,将会
诺谦
2018/05/28
3.3K0
Qt开源作品28-邮件发送工具
邮件发送工具是好多年前就开源出来的,核心就是调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法,这次用C++实现了下,参考了很多网上的例子。
feiyangqingyun
2020/06/05
8990
Qt开源作品28-邮件发送工具
Python Qt GUI设计:5种事件处理机制(提升篇—3)
之前在Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)中,我们已经简单讲到,PyQt为事件处理提供了两种机制:高级的信号与槽机制以及低级的事件处理程序,本篇博文将系统讲解Qt的事件处理机类和制。
不脱发的程序猿
2021/11/24
2.3K0
Python Qt GUI设计:5种事件处理机制(提升篇—3)
浅谈基于QT的截图工具的设计与实现
在介绍截图工具设计与实现前,让我们先通过介绍QT的绘图基础知识,让读者有一个比较感性的认识。
w4ngzhen
2023/10/18
4910
浅谈基于QT的截图工具的设计与实现
点击加载更多

相似问题

Qt keyPressEvent误差

15

Qt中的KeyPressEvent

11

如何从qml keyPressEvent调用qt keyPressEvent(QKeyEvent * Keys.onPressed )

11

Qt小部件不接收keyPressEvent

10

Qt: keyPressEvent中的printscreen键

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文