问题标签 [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 投票
0 回答
194 浏览

c++ - Qt5中的hoverMoveEvent干扰mousePressEvent

我有一个子类 QGraphicsPixmapItem(项目)设置为接收 hoverMoveEvents 和 mousePressEvent。当我在不移动鼠标的情况下单击该项目时,也会触发 hoverMoveEvent。更有问题的是,当我在 hoverMoveEvent 中调用 QImage::setPixelColor 时,不会触发 mousePressEvent。会发生什么?

事件.h

事件.cpp:

我想通过编辑每个事件中的图像像素来接收鼠标按下事件和悬停事件。hoverEvent 处理程序不应接收鼠标按下事件。

0 投票
1 回答
480 浏览

c++ - 如果双击滑块手柄如何发出信号

我们正在使用 Qt 5.10/C++,我被要求使用QSlider该类实现一个功能。

每当用户在滑块手柄上双击鼠标时,我的同事希望我发出一个信号。

这怎么可能实现。也许我必须重新实现

,但我不知道如何开始。

0 投票
1 回答
1108 浏览

qt - 移动窗口时如何获取小部件的新坐标?

我有一个像这样的小对话框:

在此处输入图像描述

当我将对话框移动到桌面上的另一个位置时,如何获取对话框中元素的新全局坐标(例如,在本例中为 Ok 按钮的左上角)?想象一下,我有一个用于确定按钮的子类 MyButton,我想为这个类使用 QEvent,我正在这个类中工作,而不是在 QMainWindow 中工作。

这个函数是错误的,因为按钮与对话框的相对位置永远不会改变,但我不知道如何纠正它以在移动对话框时获得按钮的新全局坐标我需要不断的新坐标,而不是在我释放鼠标之后。

0 投票
0 回答
385 浏览

c++ - 如果我已经检查了 event->type(),我应该检查 QEvent dynamic_cast 结果吗?

QEvent有一个type()成员函数,它将事件类型作为枚举值返回。如果我已经检查过,我应该检查dynamic_cast结果吗?例如QEvent*event->type()

这里需要条件吗if (ke)

0 投票
0 回答
100 浏览

qt - 旧的 QWidget::event() 返回值问题?

多年前,一位用户在 Qt 中心论坛上提出了这个问题,但没有得到回答。它仍然是相关的,特别是与 QWheelEvent. 根据我的经验,事件处理程序QWheelEvent必须是accept()ed 或ignore()d,但是鼠标事件可以返回true并且它算作accept()? QEvent::event()关于返回值,你学到了什么?显然,退货true并不总是算作,accept()而且文档充其量也是模糊的。

0 投票
2 回答
767 浏览

python - 将事件重新发送到新启用的子小部件

注意:下面正在编辑一个更完整的示例

我想在 Qt 中实现以下内容(特别是 PyQt,但我相信解决方案在 python 和 C++ 中都是相似的):

我希望一个小部件有一个默认禁用的内部小部件,当单击时,小部件将被启用,并且鼠标按下将传播到它。例如,在以下窗口/小部件中:

在此处输入图像描述

c如果我在and之间单击d,我希望QLineEdit启用,获得焦点,并且光标位于cand之间d。我已经重新启用了,QLineEdit但我似乎无法将事件发给它。

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

这是一个简化的例子,我也想用这种方式包装其他小部件,这样修改内部小部件实际上是不可能的。

问题是,据我所知,禁用的子小部件拒绝鼠标事件(因为它被禁用),并拒绝再次从父小部件获取它(或任何其他事件)。

任何帮助都将不胜感激。

编辑:以下是我的意思的一个更清楚的例子:

我想要的是允许用户按下禁用的内部小部件,从而完全启用它(即 btn1 和 btn2 都启用),并同时按下相应的按钮。我需要在不改变ComplexInnerWidget的情况下完成此操作(因为用户应该能够输入任何小部件作为参数MyWidget

编辑 2:eyllanesc 的解决方案适用于提供的示例,但我已经对其进行了调整,MyWidget以便能够支持多个小部件,并嵌套在其他小部件中:

0 投票
2 回答
773 浏览

c++ - Qt: How to catch QDateEdit click event?

I'm trying to catch mouse click on QDateEdit widget by handling QEvent::MouseButtonRelease event, but can't find a way to do it. I tried to override QWidget::event method of the parent widget, but it seems that events go through children to parent, and QDateEdit internally handles those events without propagating to a parent. Is there any correct solution or workaround?

0 投票
1 回答
196 浏览

c++ - eventFilter(QObject *obj, QEvent *e) 没有检测到正确的对象

我希望我的程序在我的鼠标位于labelname(a QLabel) 上时打印“鼠标在标签名称上”,并在我的鼠标不在labelname.

即使我将鼠标放在 上labelname,我的程序也会打印“鼠标不在标签名称上”。

我怎么知道我的鼠标何时不在labelname

0 投票
1 回答
56 浏览

linux - 关闭 QMenu 时在 Mac OS 和 Linux 上发出的 QEvent 类型的差异

我在我的应用程序中使用 QMenu,当我在 QMenu 外部单击以关闭它时,Qt 会发出几个事件。我发现在 Linux 上,它会发出以下事件:

在 Mac OS 上,发出的事件如下:

可以看出,当 QMenu 关闭时,QEvent::MouseButtonPress 不会在 Mac 环境中发出。我想知道这是 Qt 中的错误还是故意行为。

在我的代码中,我正在计算关闭 QMenu 时鼠标单击的坐标,在 mousePressEvent() 方法中,我在继承 QMenu 的自定义菜单类中覆盖了该方法。但由于上面强调的原因,它正在破坏 Mac OS 上的整个应用程序。

我正在使用Qt 版本 5.12.3

0 投票
2 回答
541 浏览

c++ - Qt 防止 QDialog 隐藏

在我的应用程序窗口中,都有一个用于设置等的 QDialog 上下文菜单,可以通过鼠标右键访问。在其中一个对话框中,我们希望显示一个弹出窗口(QMessageBox)警告用户执行操作,但 Qt 只允许一次打开对话框,当打开一个新对话框时,当前对话框被隐藏。当它们失去焦点等时,它们也会被隐藏,这是我需要维护的功能。

我一直在查看事件过滤器,我可以用它来捕获隐藏事件,但我似乎无法阻止隐藏实际发生。在事件上返回 true 或设置接受的组合似乎没有任何效果。

上下文菜单实际上是 QDialog 的自定义实现(我们称之为 myQDialog)。所以我尝试在那里覆盖该hide()函数并添加bool preventHiding在新的隐藏函数中使用的函数,以确定对话框是否应该被隐藏。直接调用hide();会导致调用overeidden函数,但显示确认框或在对话框外点击仍会触发hide事件但不会触发override函数。(我在代码中存在和不存在事件过滤器的情况下都试过了)。

相反,我已经覆盖setVisible()了从显示/隐藏中调用的内容。这会被一致地调用,并且我在下面的实现会阻止对话框关闭,但我无法单击消息框,尽管它仍显示在原始对话框的顶部。

有没有办法捕获并停止隐藏,或者在仍然能够与它创建的消息框交互的同时继续显示原始对话框?