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

c++ - 如何在 QGraphicsItem 派生类中接收鼠标事件?Qt

已经有关于此的线程,但我能找到的解决方案不起作用。解决办法:写QGraphicsView::MousePressEvent(event);在我的MousePressEvent类的QGraphicsView派生类的最后。两者都不起作用。QGraphicsItem 类不接收鼠标事件。这是我的 QGraphicsView 类中的 MousePressEvent:

这是我的 QGraphicsItem 类中的 MousePressEvent:

任何想法,我忘记了什么?

0 投票
3 回答
6372 浏览

c++ - qt在图形视图中获取鼠标相对于图像的点击位置

我想允许用户使用鼠标在图像上画线,我正在使用图形视图和鼠标事件,但我得到的位置不是相对于图像的正确位置这里是鼠标事件函数

那应该画一个点(我用一个像素长的线代替它看起来像一个点)

现在我得到了远离鼠标点击的红点,如图所示 在此处输入图像描述

我怎样才能让它完全在鼠标光标上?

编辑:

我为图形场景创建了一个自定义类以获得相对于它的点击,我尝试覆盖鼠标按下图形视图,但场景与图形视图的大小不同,并且鼠标点击仍然远离

在我的自定义场景中按下覆盖鼠标并没有太大帮助,因为无论我在哪里点击,我总是获得 0,0 位置来点击场景

新文件代码:

头文件

源文件

0 投票
1 回答
100 浏览

python - 如何使 QMouseEvent 仅由 MouseButtonPress 触发并忽略 MouseButtonRelease 和 MouseMove?

我正在使用一个名为的函数InstallEventHandler,它获取事件的名称并将处理程序安装到它

其中QWidget是事件处理程序安装到的类型,QMouseEvent是导致调用处理程序的事件,而 mouse_event 是处理程序。

我希望仅在按下鼠标时触发该功能,但是我遇到了一个问题,即QMouseEvent鼠标移动和释放不仅会按下鼠标,还会生成该功能。这使得该功能被调用数千次并错过了我的代码。

几天以来,我一直在尝试寻找一种方法并搜索所有可用的方法,但没有奏效。

0 投票
1 回答
6556 浏览

qt - 如何连接到mousePressEvent插槽Qt

Class Buttons中,我有一个btnRightClicked信号和一个mousePressEvent插槽:

在 中mainwindow.cpp,我将btnRightClicked信号连接到onRightClicked插槽,如下所示:

onRightClicked插槽是这样的:

但是我运行了这个程序,什么也没发生。我猜原因是因为我没有连接到mousePressEvent插槽。我对Qt有点陌生,我不知道我是否正确。

我在中央小部件上设置了一些按钮,我希望它们在右键单击每个按钮时具有右键单击事件。那么我怎样才能使这项工作呢?

谢谢

编辑:在button.h

0 投票
0 回答
132 浏览

qt - 在 Qt 中处理 QMouseEvent 的正确方法

我目前QPushButton在扫雷游戏中的右键单击事件有问题。据我了解,如果我想为 提供右键单击事件QPushButton,我必须执行以下操作:
Buttons Class

然后在 中mainwindow.cpp,创建一个像这样的对象:

并像这样连接到btnRightClick signal一个:slotMainWindow Class

这行得通,但因为它是一个扫雷游戏,我需要很多按钮。我想知道每次我需要一个具有右键单击事件的按钮时,我是否必须像上面一样创建一个新对象?

例如,如果我想要 64 QPushButtons,我是否必须像这样创建 64 个对象?

对我来说,创建这么多对象可能听起来有点疯狂。有没有办法只创建一个包含许多QPushButtons具有右键单击事件的对象?

请允许我问另一个问题,即使我必须创建这么多对象,每次单击其中一个对象时,该对象都应该被隐藏或消失。我试过这个:

这是行不通的。

希望我能清楚地解释我的问题。那么我该如何解决这些问题呢?或者有什么关于在扫雷游戏中处理右键事件的建议吗?

任何建议将不胜感激,谢谢。

0 投票
1 回答
453 浏览

qt - 为 qgraphicsObject 实现 mouseMoveEvent 以跟随光标

我有一个 Qt 应用程序,其中包含从 QGraphicsObjcet 派生的对象,这些对象需要在场景中移动。我知道我可以使用移动标志来实现这一点。

myObject->setFlag(QGraphicsItem::ItemIsMovable); myObject->setFlag(QGraphicsItem::ItemIsSelectable); myObject->setFlag(QGraphicsItem::ItemSendsGeometryChanges);

但是当我使用它时,我遇到了对象弹出位置的问题。对象移动到不正确位置的唯一时间是当我移动的对象被删除并从场景中移除时,下次我尝试移动场景中的另一个对象时,它相对于鼠标光标的位置会失真,直到我松开并再次按下。我意识到我的问题可能完全发生在我的代码的其他地方,但从我自己的调试来看,我至少想自己尝试实现移动功能来解决这个问题。

所以我的问题是:如何实现可移动对象(从 QGraphicsObject 派生),就像上面的标志处于活动状态一样?

我一直在尝试使用 mouseMoveEvent,但不知道如何让对象随光标移动。也许我应该研究 DragMoveEvent ?如果可能的话,我真的很感激看到下面 mouseMoveEvent 的代码会是什么样子:

0 投票
1 回答
908 浏览

c++ - 如何识别 QGraphicsView 鼠标移动事件?

我是 qt 和 c++ 的新手。我有一个 qgraphicsview 来绘制信号。我会通过鼠标单击和矩形绘图来缩放特定区域。所以我需要鼠标按下位置和拖动位置。为此,我这样做:

在头文件中:

在源文件中:

当我在图形视图中按下并移动鼠标时,我可以识别点击的位置,但 mouseMoveEvent(QMouseEvent * ev)永远不会被调用。并且永远不会发生obj == ui.graphicsView声明。eventFilter我怎么了?我该如何解决?

0 投票
1 回答
125 浏览

c++ - 有没有更好的方法来移动窗口?

我正在使用 Qt Framework for desktop 开发应用程序。由于我删除了每个窗口装饰,因此我必须实现主窗口以在用户单击它并移动鼠标时接收移动事件。

我尝试了以下代码,但我不满意。我想知道是否有更好的方法来更优雅。

你能给我推荐点别的吗?

0 投票
0 回答
194 浏览

c++ - Qt5中的hoverMoveEvent干扰mousePressEvent

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

事件.h

事件.cpp:

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

0 投票
3 回答
1547 浏览

c++ - 当鼠标在Qt中窗口的自定义小部件上时如何移动整个窗口?

假设我有一个自定义小部件并将其添加到 qt 的主窗口中。

在此处输入图像描述

如您所见,红色区域是自定义小部件。我想要做的是当鼠标在红色区域按下并移动时,整个窗口也会移动。

我知道如何简单地实现mousePressEventand mouseMoveEvent; 但是在处理带有自定义小部件的窗口时,我不知道在自定义小部件上按下鼠标时如何移动整个窗口。

另外我想提一下,我只希望鼠标在红色区域按下并移动时窗口可移动,而当鼠标在主窗口区域的其余部分按下并移动时,什么都不会发生。

这是我的CustomWidget课的样子:

如果您想知道我为什么要这样做,在我的应用程序中,我隐藏了标题栏并自己绘制了一个自定义标题栏。但是窗口是不可移动的,所以我想让整个窗口在鼠标按下并在标题栏上移动时可以移动。
希望我清楚地解释自己。