问题标签 [qmouseevent]

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 投票
2 回答
767 浏览

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

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

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

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

在此处输入图像描述

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

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

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

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

任何帮助都将不胜感激。

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

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

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

0 投票
1 回答
218 浏览

qt - QWidget中的QT MouseMove模拟不起作用

我正在尝试从一个小部件中抓取触摸事件并在另一个小部件中对其进行模拟。对于 mousePressEvent、mouseReleaseEvent,抓取和模拟触摸事件工作正常。但是当我尝试模拟 mouseMoveEvent 时,相应的事件没有进入目标端。

以上代码用于抓取和模拟。基本上 (QEvent::MouseMove)+ (Qt::LeftButton) 用于滚动表格小部件。QCoreApplication::sendEvent 返回成功。任何人都可以帮我解决这个问题。

0 投票
1 回答
634 浏览

c++ - 使用 QTest 模拟鼠标移动

QTest用来测试简单的小部件,一切都按预期工作。但是现在我有一个更复杂的测试场景,我基本上有一个小部件,它允许用户按下鼠标按钮,然后移动一些内容,然后释放鼠标按钮。

为此,我创建了以下测试工具:

主文件

WidgetToTest.h

WidgetToTest.cpp

测试对象.h

测试对象.cpp

因此,用户使用鼠标左键单击窗口小部件内的位置 (5,5),然后在按住按钮的同时拖动鼠标到位置 (20,20),然后在位置 (20,20) 释放按钮。

有趣的是,移动事件从未发生在小部件内部,我真的不知道为什么。

看来,我并没有完全理解它的用意QTest::mouseMove,但是 Qt 文档在如何使用它方面也比较沉默。

如何模拟我想要的行为?

0 投票
1 回答
470 浏览

qt - 在不使用滚动按钮的情况下放大/缩小 QT

我想用鼠标放大/缩小openGL中的一部分。现在我可以使用鼠标中的滚动按钮做得很好了。但我现在的目标是通过按住鼠标左键并在屏幕上来回移动鼠标来执行相同的操作。

我不知道如何通过检测鼠标的来回运动来执行缩放动作。

现在我想使用鼠标移动和鼠标按下事件来执行相同的操作。我无法选择检测来回运动的事件

0 投票
0 回答
275 浏览

qt - 如何使用 QTest 模拟拖放操作

为了为小部件中的拖放错误创建测试用例,QTreeView我尝试模拟拖放鼠标移动行为。

我基本上选择了第一个元素QTreeView并希望它拖放到第三个元素上。我通过使用QTest::mousePress和的组合来做到这一点QTest::mouseMove。最后当然应该有 a QTest::mouseRelease,但我已经无法重现 mousePress 和 mouseMove。

这些是重现所需的步骤:

  1. 用户在第一个项目的中心移动鼠标
  2. 用户按下鼠标左键
  3. 用户按住鼠标左键并将鼠标移动到第三个项目的中心
  4. 用户释放鼠标左键

如果按照我可以看到的描述执行这些操作,则QTreeView小部件会做出适当的反应,并指示特殊的高光和垂直线,以防项目将在项目之间移动。

不幸的是,我的自动化测试无法重现这种行为。似乎QTest::mousePress按顺序调用会有所不同。也使用一对QTest::mousePressandQTest::mouseMove是不同的。

这是我的代码:

主文件

测试对象.h

测试对象.cpp

鼠标移动器.h

鼠标移动器.cpp

0 投票
0 回答
112 浏览

c++ - 为什么当我在 Combobox 弹出窗口上单击鼠标的 MiddleButton 时不调用 mousePressEvent?

我正在为我的代码使用 Qt Creator 和 C++。我有一个用于多选的可勾选组合框。我想从弹出窗口中使用鼠标 Middlebutton 选择未选中的复选框。我试图覆盖 mousePressEvent 但没有奏效。以下是我的代码片段:

0 投票
1 回答
144 浏览

c++ - Qt:如何触发action_triggered然后使用QMouseEvent?

我想做这样的事情,即使我知道这不是它的工作方式。我不太擅长 QMouseEvent,

所以我想在我的界面中单击按钮addState(使用设计器模式,ui文件制作)然后在我的场景上第二次单击它调用drawState()用鼠标(点击)位置。

我该怎么做?

现在代码编译但在运行时出现此错误

0 投票
1 回答
96 浏览

python - 使用像素坐标获取 QGraphicScene 中的鼠标位置

我尝试创建一个程序来操作图像,我想要鼠标在 Qgraphicscene 中时的位置,但是除非我在 Qgraphicview 之外开始,否则不会触发鼠标事件,我怎样才能得到这个位置图像(像素)的坐标,感谢您的帮助

0 投票
1 回答
341 浏览

python - 捕捉鼠标事件

不知道如何给出 QMouseEvent 类的参数。我应该创建新类以在我的 QTextEdit 中实现 QMouseEvent 吗?

0 投票
1 回答
212 浏览

c++ - 如何使用 QMouseEvent 在 QChart 中显示鼠标位置?

我对 Qt 和 C++ 很陌生。我有一个 QChart,它有一个 QLineSeries 对象。我想向用户展示鼠标在坐标系上的投影。我的问题是我可以在除 QChart 对象之外的任何地方显示坐标。我只想在鼠标在 QChart 上时显示坐标。这是我的代码示例:

boxWhisker.h 文件

boxWhisker.cpp 文件

我的问题是如何仅在 QChart 上显示坐标?任何帮助将不胜感激!

编辑

在这里,我尝试创建一个由 QChart 类继承的新类,并在我的新类中定义我的 mouseEvent 函数。这是我的代码示例:

qchart_me.h:

qchart_me.cpp:

boxWhisker.h:

boxWhisker.cpp

我试图像 Qt Callout Example 那样编辑我的代码。
我得到的错误:'virtual void QChart_ME::mouseMoveEvent(QGraphicsSceneMouseEvent*)' 在此上下文中受到保护 this->chartTrendLine->mouseMoveEvent(myEvent);

我该如何解决这个问题?