问题标签 [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.
c++ - Qt5中的hoverMoveEvent干扰mousePressEvent
我有一个子类 QGraphicsPixmapItem(项目)设置为接收 hoverMoveEvents 和 mousePressEvent。当我在不移动鼠标的情况下单击该项目时,也会触发 hoverMoveEvent。更有问题的是,当我在 hoverMoveEvent 中调用 QImage::setPixelColor 时,不会触发 mousePressEvent。会发生什么?
事件.h
事件.cpp:
我想通过编辑每个事件中的图像像素来接收鼠标按下事件和悬停事件。hoverEvent 处理程序不应接收鼠标按下事件。
c++ - 如果双击滑块手柄如何发出信号
我们正在使用 Qt 5.10/C++,我被要求使用QSlider
该类实现一个功能。
每当用户在滑块手柄上双击鼠标时,我的同事希望我发出一个信号。
这怎么可能实现。也许我必须重新实现
,但我不知道如何开始。
c++ - 如果我已经检查了 event->type(),我应该检查 QEvent dynamic_cast 结果吗?
QEvent
有一个type()
成员函数,它将事件类型作为枚举值返回。如果我已经检查过,我应该检查dynamic_cast
结果吗?例如QEvent*
event->type()
这里需要条件吗if (ke)
?
qt - 旧的 QWidget::event() 返回值问题?
多年前,一位用户在 Qt 中心论坛上提出了这个问题,但没有得到回答。它仍然是相关的,特别是与 QWheelEvent
. 根据我的经验,事件处理程序QWheelEvent
必须是accept()
ed 或ignore()
d,但是鼠标事件可以返回true
并且它算作accept()
? QEvent::event()
关于返回值,你学到了什么?显然,退货true
并不总是算作,accept()
而且文档充其量也是模糊的。
python - 将事件重新发送到新启用的子小部件
注意:下面正在编辑一个更完整的示例
我想在 Qt 中实现以下内容(特别是 PyQt,但我相信解决方案在 python 和 C++ 中都是相似的):
我希望一个小部件有一个默认禁用的内部小部件,当单击时,小部件将被启用,并且鼠标按下将传播到它。例如,在以下窗口/小部件中:
c
如果我在and之间单击d
,我希望QLineEdit
启用,获得焦点,并且光标位于c
and之间d
。我已经重新启用了,QLineEdit
但我似乎无法将事件发回给它。
到目前为止,这是我的代码:
这是一个简化的例子,我也想用这种方式包装其他小部件,这样修改内部小部件实际上是不可能的。
问题是,据我所知,禁用的子小部件拒绝鼠标事件(因为它被禁用),并拒绝再次从父小部件获取它(或任何其他事件)。
任何帮助都将不胜感激。
编辑:以下是我的意思的一个更清楚的例子:
我想要的是允许用户按下禁用的内部小部件,从而完全启用它(即 btn1 和 btn2 都启用),并同时按下相应的按钮。我需要在不改变ComplexInnerWidget
的情况下完成此操作(因为用户应该能够输入任何小部件作为参数MyWidget
)
编辑 2:eyllanesc 的解决方案适用于提供的示例,但我已经对其进行了调整,MyWidget
以便能够支持多个小部件,并嵌套在其他小部件中:
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?
c++ - eventFilter(QObject *obj, QEvent *e) 没有检测到正确的对象
我希望我的程序在我的鼠标位于labelname
(a QLabel
) 上时打印“鼠标在标签名称上”,并在我的鼠标不在labelname
.
即使我将鼠标放在 上labelname
,我的程序也会打印“鼠标不在标签名称上”。
我怎么知道我的鼠标何时不在labelname
?
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
c++ - Qt 防止 QDialog 隐藏
在我的应用程序窗口中,都有一个用于设置等的 QDialog 上下文菜单,可以通过鼠标右键访问。在其中一个对话框中,我们希望显示一个弹出窗口(QMessageBox)警告用户执行操作,但 Qt 只允许一次打开对话框,当打开一个新对话框时,当前对话框被隐藏。当它们失去焦点等时,它们也会被隐藏,这是我需要维护的功能。
我一直在查看事件过滤器,我可以用它来捕获隐藏事件,但我似乎无法阻止隐藏实际发生。在事件上返回 true 或设置接受的组合似乎没有任何效果。
上下文菜单实际上是 QDialog 的自定义实现(我们称之为 myQDialog)。所以我尝试在那里覆盖该hide()
函数并添加bool preventHiding
在新的隐藏函数中使用的函数,以确定对话框是否应该被隐藏。直接调用hide();
会导致调用overeidden函数,但显示确认框或在对话框外点击仍会触发hide事件但不会触发override函数。(我在代码中存在和不存在事件过滤器的情况下都试过了)。
相反,我已经覆盖setVisible()
了从显示/隐藏中调用的内容。这会被一致地调用,并且我在下面的实现会阻止对话框关闭,但我无法单击消息框,尽管它仍显示在原始对话框的顶部。
有没有办法捕获并停止隐藏,或者在仍然能够与它创建的消息框交互的同时继续显示原始对话框?