问题标签 [qkeyevent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1421 浏览

qt - Qt 小部件没有收到 keyPressEvent

我的子小部件没有获得 keyPressEvents,而如果我将相同的小部件放置为顶级窗口,它会获得。我尝试将其设置为焦点,但这对此没有影响。代码如下,显示了我尝试开始工作的内容。

对于完整性,.pro 文件也一样:

如何修复小部件以接收关键事件?

这个相关问题建议安装事件过滤器,但我不想这样做,必须有一种独立的方法来修复小部件本身。

0 投票
2 回答
1171 浏览

c++ - 按键事件过滤器出现问题

我正在尝试学习如何使用 QtCreator 制作带有 GUI 的软件。我以前做过一些编程,但从来没有涉及到任何事情。到目前为止,我已经制作了一个包含 5 个项目的窗口:2 个标签、1 个按钮、1 个 lineEdit 和 1 个 listWidget。

我的目标是能够在 lineEdit 中输入文本并使其出现在 listWidget 中。如果您用鼠标单击按钮,则可以正常工作。

我还希望能够使用键盘上的回车键来激活按钮。这是我需要帮助的部分。

我创建了一个用于处理关键事件的新类,称为 KeyboardFilter。

我已经在主窗口对象上安装了事件过滤器。eventFilter 函数应该接收任何事件,检查它是否是按键事件,然后检查它是否是回车按钮。如果是,那么我想激活按钮。

我不知道我为 eventFilter 编写的任何东西是否真的有效。

当我运行此代码时,会弹出窗口,我可以在 lineEdit 中输入文本。如果我用鼠标单击按钮,文本会根据需要移动到 listWidget。如果我输入文本然后点击“Enter”,什么也不会发生。

在按 Enter 之前,我曾尝试按 tab 以将焦点放在 lineEdit、listWidget 和按钮上,但没有帮助。

0 投票
0 回答
79 浏览

qt - 来自 QKeyEvent 的文本输入不适用于 QTextDocument 中的俄语字母

我对文本输入和 Qt 有一个奇怪的问题。我有一个小部件,它接受按键事件,提取文本并将文本附加到字符串变量,然后在绘制事件中创建一个 QTextDocument 并绘制文本,到目前为止一切都很好,适用于拉丁字母。但是当一些用户尝试输入非拉丁字母(如俄语)时,一些字母仍然是拉丁字母,而另一些则完全丢失。

例如,输入以下文本:“Не работает на русском языке”会导致: 在此处输入图像描述

我从 QKeyEvent https://doc.qt.io/qt-5/qkeyevent.html#text获取输入的字母

知道是什么导致了这种行为以及如何解决它吗?

0 投票
1 回答
130 浏览

linux - QKeyEvent::text() 在 Linux 上不返回重音字母

有谁知道为什么在 Linux 上QKeyEvent::text()键入` + a返回一个空字符串和一个字母a而不是一个空字符串和à ?在 Windows 下,这似乎工作正常(在 Windows 和 Linux 下运行相同的应用程序)。

我正在通过此类处理按下的

0 投票
1 回答
188 浏览

python-3.x - PyQt5 - 双击相同的键盘键

我通过子类化QMainWindow和覆盖keyPressEventandkeyReleaseEvent函数来处理多个按键,然后在按键是否按下时更新字典......

...和pressedKeysArray存在:

但是,我希望能够捕捉到双右箭头单击,例如在 100 或 200 毫秒内。我会扩展pressedKeys字典以包含可以设置为的双击键Trueor False,但我不知道如何知道该键是否已连续按下两次。

到目前为止,这是我的代码:

0 投票
1 回答
368 浏览

qt - 如何从 qt 中的按键事件调用定义的插槽/如何将按键事件与 gui 上的 QPushbutton 连接?

我是qt的初学者。我正在开发计算器 gui 应用程序,当按下计算器上的任何数字按钮时,我已经定义了像 numPressed() 这样的插槽,它将显示在 lineEdit 上。

这里 add_button 是 UI 上的 QPushbutton 名称。

我想要达到的是什么?

当在键盘上按下数字键时,我想连接按下的数字和计算器上的数字按钮,用我在键盘上按下的数字填充 lineEdit?

PS:我想将键盘上按下的数字连接到按钮上的数字。

0 投票
1 回答
48 浏览

qt - QT检测是否按下并释放返回键或是否长按

我在 Windows 10 上使用 QT。

我正在使用一个 QDialog ,我想用返回键按下 QPushButtons 。但是,我希望用户必须按下返回键并再次释放它。长按返回键应该只工作一次,而不是几次。

我检查了keyPressEvent和keyReleaseEvent,但不幸的是,当我用返回键长按时,我不断得到keyReleaseEvent和keyPressEvent。

有什么想法,我如何检测返回键是否被长按或如何禁用长按功能?

0 投票
1 回答
98 浏览

python - QT:当有两个小部件时,只有一个小部件响应按键事件

我的应用程序中有两个小部件,我想在按下键时在小部件中做一些事情。但是,我发现只有一个小部件响应按键事件,即使另一个小部件具有焦点。

重现我的问题的代码是:

当我按下键盘时,只w2响应按键事件。如何让两个小部件都响应按键事件?

环境是:

0 投票
1 回答
117 浏览

c++ - Qt - 在嵌入式 linux 设备 (EGLFS) 中从 /dev/input/event1 捕获 QKeyEvent

我正在尝试在使用自定义键盘 的 linux 嵌入式设备(EGLFS )上的 keypress/keyrelease 上获取QKeyEvents 。/dev/input/event1是关键事件文件。

使用evtest输出与预期一致。但是在 EGLFS 平台上运行的 Qt 应用程序中, 每当在自定义键盘上按下/释放键时,事件过滤器都会将事件类型检测为QEvent::SockAct 。预期的事件类型是我无法获得的QEvent::KeyPress/QEvent::KeyRelease 。

我尝试设置以下环境变量

QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1;grab=1 QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
QT_QPA_PLATFORM=eglfs
QT_QPA_EGLFS_DISABLE_INPUT = 1

在设置这些变量之前,我无法在按键/释放时获得任何事件。但是在设置了这些之后,它被检测为 QEvent::SockAct。

请建议在按键/释放时获取 QKeyEvent 需要设置什么。在嵌入式 linux 上运行的Qt 版本 5.14 。