问题标签 [qevent]

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 回答
1058 浏览

qt - 忽略 QWidget 点击事件并将其传播到操作系统

我有一个顶级无父母QWidget,除此之外还有一堆其他的QWidgets(例如QPushButtons)。我想让我的QWidget行为对鼠标事件是透明的。因此,当我单击QWidget(但不是我的按钮)时,我希望我的窗口失去焦点并选择后面的某些内容(例如,Windows 资源管理器窗口,如果它恰好在我的窗口后面)。我还希望我QPushButton的 s 继续处理鼠标事件。

这可能吗?我尝试在小部件上设置Qt::WA_TranslucentBackgroundandQt::WA_TransparentForMouseEvents但如果我在其上绘制一些东西,例如QGraphicsDropShadowEffect小部件仍会在QGraphicsDropShadowEffect绘制它的部分上处理鼠标单击事件。

这可能吗?

问候!

0 投票
2 回答
9774 浏览

qt - Qt keyPressEvent、“Hold”和keyReleaseEvent处理按钮/鼠标点击

我正在编写一个 Qt 程序来模拟一个硬件,我想模拟按钮按下、按住和释放事件。在我的应用程序中,我想处理来自键盘和鼠标点击的输入,以方便用户(即我)。我注意到一些奇怪的行为,我不明白。

该应用程序使用autoRepeat启用的 QPushButton 和 100 msautoRepeatDelayautoRepeatInterval. 如果我用鼠标点击一个按钮,我会收到交替的“按下”和“释放”事件。我本来希望看到 1 到 N-1 个“按下”事件,然后是一个“发布”事件。为什么 Qt 会这样?

我还实现了以下代码来处理来自键盘的按钮按下:

在这里,我看到了两种类型的行为。对于字母数字键,我看到交替的“按下”和“释放”事件。对于箭头键,我只看到“已发布”事件。同样,我本来希望看到 1 到 N-1 个“按下”事件,然后是“释放”事件。为什么箭头键的行为与字母数字键不同?

我想在 Qt 中做的事情可能吗?

0 投票
2 回答
1355 浏览

qt - 确定鼠标事件:悬停离开父小部件

我有 2 个小部件,一个父小部件和一个子小部件:

在此处输入图像描述

可以访问小部件的实现,是否可以在不实现任何事件处理程序或派生小部件的情况下确定光标从小部件red悬停到小部件中的时刻?redblueblue

红色区域具有明确定义的厚度(例如 5px)。

0 投票
3 回答
3478 浏览

qt - 在 QML 对象之间传递事件

我有一种情况,我想将 QML 事件传递给初始事件处理程序中间的另一个 QML 项目。例如

我能做些什么来实现passEventToObject

笔记:

  • 我无权在Keys.onPressed里面修改item2,它是 QML 内置的(TextInput)。
  • 事件传递必须发生在中间item1.Keys.onPressed
0 投票
0 回答
146 浏览

c++ - QMoveEvent 连续发出

我在 Windows 7 和 Ubuntu 上都使用相同的 Qt 程序(v5.2.1)。在两者中,我都有一个 QMainWindow 覆盖事件函数,如下所示:

在那里我寻找QEvent::Move做一些处理。在 Windows 上,如果我单击并拖动事件周围的窗口似乎会连续发生。但是,在 Ubuntu 上,它仅在鼠标释放后才会发生。我似乎在任何文档中都找不到这一点,希望得到一些澄清。

0 投票
2 回答
168 浏览

qt - 记录排队的连接

我正在使用使用 Qt 5.4 构建的复杂状态引擎系统(使用自定义状态引擎类)。

该代码的一部分是记录事件、转换等。记录引擎/状态对象接收的所有事件对我来说非常重要,这样我就可以完全跟踪状态引擎中发生的事情。

对于大多数事件类型,日志记录很容易。但是我未能记录排队的连接(即元呼叫事件)。QMetaCallEvent 是私有的,所以我无能为力。然而,很难相信不能正确检查 Qt 的这样一个组成部分。

有没有我错过的方法可以记录排队的连接(包括信号名称、插槽名称、发送方名称、接收方名称和参数,如果可能的话)?

0 投票
1 回答
2984 浏览

c++ - 使用按下按钮输入时,QWidget 不会触发 QEvent::MouseMove

在带有 C++ 的 Qt 中,我创建了一个窗口,里面有一个小 QWidget。

小QWidget每次显示一条消息QEvent::EnterQEvent::Leave或者QEvent::MouseMove被触发。

当在小 QWidget 之外按下(并按住)任何鼠标按钮,并且鼠标移动到这个小 QWidget 的顶部(按住时),QEvent::MouseMove不会为这个小 QWidget 触发。此外,QEvent::Enter推迟到释放鼠标按钮之后。

在相反的情况下:当鼠标在小 QWidget 上按下(并按住),然后鼠标移到外面,QEvent::Leave则推迟到释放鼠标按钮之后。

QEvent::MouseMove即使按住鼠标按钮,是否有任何解决方案可以一直检索?

附加数据:是的,setMouseTracking(true)已设置。

测试示例:

小部件:

主要的

项目

0 投票
2 回答
959 浏览

c++ - Qt LanguageChange 事件 - 找出新的语言

当我changeEvent(QEvent* event)使用接收类型 event->type() == QEvent::LanguageChange时,如何获取有关我的应用程序中的新语言的信息?

0 投票
1 回答
802 浏览

c++ - QEvent 信号和槽

我创建了一个 Qt 项目,并添加了一个 QPushButton,其样式是我使用 QEvent 和 QMouseEvent 自定义的。我在此按钮上添加了一个插槽,但它不起作用。这是一个像我这样的项目:

标题 1:

标题 2:

来源 1:

来源 2:

来源 3:

我在源 2 上收到此错误:

错误:没有匹配函数调用 'QObject::connect(myQPushButton&, const char*, MainWindow*, const char*)' QObject::connect(y, SIGNAL(clicked()), &w, SLOT(close()) ); ^

我希望这个按钮成为退出按钮。有人可以帮助我吗?

0 投票
4 回答
4001 浏览

c++ - 按下 W/A/S/D 键时 Qt keyPressEvent 未注册

我有一个应用程序(与 W/A/S/D 键可能对导航有特殊意义的任何游戏无关),其中有一个QFrame. 我覆盖了keyPressEvent()通过键盘输入的文本,同时专注于它QFrame。这是我的代码:

当我一次从键盘输入一个字符时,对于所有字符和数字,两个语句都被正确记录。但是对于这四个键,日志语句都没有执行,即事件处理程序甚至没有触发。怎么了?

编辑:通过示例后,我尝试形成我的错误的最小工作示例。这就是我所拥有的。通过事件过滤器执行此操作也存在同样的问题。只有这四个字符才不会被记录。