问题标签 [mousearea]

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 投票
4 回答
20227 浏览

qml - MouseArea 窃取了 QML 元素的鼠标事件

如果我MouseArea在 QML 元素上放置一个,那么MouseArea将窃取所有鼠标事件。因此,TextEdit将是不可编辑和不可选择的。

有没有办法解决它?

顺便说一句,如果我把 largeMouseArea放在另一个上MouseArea, largeMouseArea会窃取所有鼠标事件。我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?

0 投票
2 回答
587 浏览

qt - 在鼠标移动到鼠标区域之外时保持光标形状

我正在实现狭窄的调整大小句柄,这给我带来了烦人的行为。当鼠标直接位于手柄上方时,光标形状与预期一致,但一旦开始拖动手柄,光标形状就会变得不一致。造成这种情况的原因有两个:

  • 当光标快速移动并在手柄之前移动直到手柄“赶上”(或者当“fluid qml”过于流畅时) - 这尤其令人讨厌,因为光标形状会迅速变化并闪烁

  • 当光标移动到手柄允许的自由度之外时

我查阅了文档,但它似乎没有包含任何关于锁定光标的内容,直到按下释放。

我确实设法找到了修复它的方法 - 使用虚拟覆盖MouseArea-acceptedButtons: Qt.NoButton这实际上有助于伪造光标一致性,但也有其自身的问题。拥有该覆盖鼠标区域不允许光标在手柄上方时更改为调整大小形状,因为手柄位于覆盖鼠标区域下方,因此根本无法修改光标形状。因此,仅在单击手柄后才开始调整大小形状,这远非理想。将覆盖鼠标区域设置为enabled: false不会改变这一点 - 它仍然会阻止来自底层鼠标区域的光标形状变化。也有一个解决方法,例如将覆盖鼠标区域大小设置为 0x0,但它有点难看。

理想情况下,光标形状应该一直持续到鼠标区域被按下,无论它是在其区域内还是在其区域外 - 毕竟,如果您离开它,则不会释放按下,因此鼠标区域仍然处于控制之中并且应该保持其光标形状。例如 - 窗口调整大小手柄保持调整大小形状,即使它被移动以调整窗口大小小于其最小尺寸,直到按下释放。

对我来说,执行中似乎存在缺陷MouseArea- 按下时不会保持光标形状,即使禁用鼠标区域也会改变光标形状。

0 投票
1 回答
441 浏览

android - Android 上 MouseArea 的幻影双击

在 Android 上测试应用程序时,我注意到发生了一些奇怪的事情。双击事件处理程序一直在触发,而该特定项目上没有发生任何双击。

试图隔离问题时,我发现几乎每一次点击链都像双击一样快速,无论哪个两个对象会导致第二个对象上的第二次点击注册为双击,而实际上它只是一次单击。

下面是一个示例,由一排 3 个随机颜色的矩形组成,每个矩形内部都有一个鼠标区域。每个鼠标区域的双击被操纵以将父矩形的颜色设置为不同的随机颜色。在android下快速单击两个不同的矩形会触发双击和第二个颜色变化。这不会在 Windows 或 Ubuntu Linux 上发生。

看起来好像“上一次单击”或应该用于检测双击的任何属性在不同的鼠标区域之间共享,而不是在每个鼠标区域之间共享。该问题在 Qt 5.7 和 5.7.1 中都有体现。

这绝对是我今年发现的第 10 个 Qt 错误,但我仍然想问一下是否有人知道发生了什么以及如何修复它,因为我需要修复它,而 Qt 错误报告过程并不快。因此,任何想法都非常受欢迎。

0 投票
1 回答
617 浏览

android - 在 Android 中同时使用两个 MouseArea

我需要在没有物理键盘的平板设备上模拟控制按键。为此,我有一个屏幕浮动按钮,用户可以使用它来实现这一点。

然而问题是只能有一个MouseArea接收触摸事件。如果一个人有焦点,其余的将被忽略。这显然是有问题的,因为这使得无法按住控制按钮并按下其他一些 GUI 元素。

请注意,在文字上下文中我不需要多点触控——每个鼠标区域只需要一次触控,我只需要多个鼠标区域同时工作。这一点,再加上MultiPointTouchArea's API 是专门为实际的多点触控量身定制的,并且缺少我实际需要的属性、功能(悬停、光标)和便利性,这也是我真的不太渴望使用它的原因,即使据说向后兼容鼠标输入。

我怀疑这种限制是由于触摸被硬塞到MouseArea而不是一等公民的事实,并且底层实现是一个光标统治他们所有的交易,但仍然,也许有一些方法使多个鼠标区域同时工作?

好的,这是一个简单的例子 - 按下屏幕的左侧或右侧分别将其变为蓝色和红色,但是如果已经按下另一个,则无法按下另一个。

0 投票
2 回答
1873 浏览

qt - QML如何在鼠标区域中设置颜色

我想设计以下按钮布局:

关联

它在蓝色背景上放置了一个重新启动按钮图像。我想使用 QML 在 Qt 中复制相同的内容。我正在使用一个 MouseArea Qt Quick 对象,我在拉伸填充模式下将图像重叠在该对象上。但是,没有为鼠标区域获得蓝色背景的选项。目前它看起来像这样:

关联

相同的对应代码:

如何在此处设置 MouseArea 的背景?

0 投票
1 回答
878 浏览

qml - QML:鼠标区域重叠的问题

我有一个 QML 应用程序和 MouseAreas 的问题。

在一个小型测试应用程序中,有一个红色矩形,当鼠标进入这个矩形时,下面会出现一个灰色菜单(使用 Loader 创建)。

此灰色菜单必须在鼠标悬停在红色矩形或菜单上时打开。为此,我有 2 个鼠标区域,1 个在红色矩形上,1 个在菜单上。两者都是 'hoverEnabled' 和 'enter' 和 'exit' 我控制 'hoverDialog' 和 'hoverTopZone'。

当两者都为假时,这意味着鼠标不在,所以我关闭了菜单(使用信号,加载器处于非活动状态)。

计时器是必需的,因为当从“mouseAreaTopZone”传递到“mouseAreaDialog”时,“hoverDialog”和“hoverTopZone”都是错误的。用定时器固定。

在菜单的中间有一个绿色的矩形,并且(仅)当鼠标在那里时,一个黄色的矩形必须是可见的。

有我的问题。我在绿色矩形中有一个 MouseArea,但在需要时黄色矩形不可见。

如果我将“rectGreen”移动到“mouseAreaTopZone”和“mouseAreaDialog”下方(即在文件末尾),当鼠标位于绿色矩形上方时,我会看到黄色矩形,因为它的鼠标区域是“最顶部”

但是在这种情况下,菜单对话框已关闭,因为当鼠标进入绿色矩形内的 MouseArea 时,hoverDialog 和 hoverTopZone 为假...

我希望你能理解我的问题......这是我的代码:

测试.qml


测试菜单.qml

在此先感谢,迭戈

0 投票
0 回答
903 浏览

hover - QML:ScrollView 和 MouseAreas:在滚动条上未检测到“鼠标悬停”

我有一个 QML 应用程序,当我按下按钮时需要打开一个对话框。当鼠标离开对话框时必须关闭对话框(没有点击,所以我认为'Popup'控件不能使用)。

为此,我使用 MouseAreas 并控制鼠标何时位于我的一个 MouseAreas 上。我解决了一些问题(请参阅QML:鼠标区域重叠问题),但现在我发现了 ScrollView 的另一个问题(对话框必须包含带有 ListView 的 ScrollView)。我无法控制鼠标何时悬停在滚动条上...并且对话框已关闭,因为没有 MouseArea “有”鼠标悬停...

如何控制滚动条上的鼠标事件?

在此先感谢,迭戈

测试.qml

测试菜单.qml

0 投票
0 回答
1012 浏览

qt - Qt/QML:升级后在触摸屏上点击时,Flickable 中的 MouseArea 没有发出释放/单击的信号

从 Qt 5.4.1 升级到 5.9.1 后,以下代码在使用触摸屏时改变了行为:

以前使用 Qt 5.4.1 并使用鼠标或触摸屏单击它打印的 Rectangle:

当前使用 Qt 5.9.1 并使用鼠标单击矩形时仍然可以正常工作:

但是使用 Qt 5.9.1 并使用触摸屏单击 Rectangle 它只打印

不知道为什么使用触摸屏时不再发出释放和单击的信号,但对于我的代码,我仍然需要发出它们。

如果我改变

然后 mouseArea 在单击时发出所有 3 个信号,但这对我来说不是一个解决方案,因为这会导致在轻弹时从 mousearea 发出按下的信号。

0 投票
1 回答
2638 浏览

button - qml 按钮不触发,与 MouseArea 相同

我创建了一个基于 Qt 5.9.3 的新 QML 项目。我设置了一个带有按钮的简单 ApplicationWindow 以及我自己的按钮(MyButton),但我从来没有让 onClicked() 事件(显然)为它们中的任何一个触发。弹出我的应用程序窗口,显示 2 个按钮。单击其中任何一个都不会在我的控制台输出中显示任何内容。

如果这很重要,我还会在 .pro 文件中预编译我的 qml 源文件。我在启动时遇到了一些字体错误,我在 C++ 中修复了一些字体错误,以便我可以看到一些东西,除了没有错误或警告。我花了几个小时试图通过一个简单的鼠标单击事件但没有运气。

任何帮助表示赞赏。

这是我的 main.qml:

和 MyButton.qml

更新:我做了一件非常愚蠢的事情。在我没有包含的 main.cpp 文件中,我认为我会更干净,并将我的 QQmlEngine 初始化代码移动到它自己的单独方法中。当然,当引擎参考超出范围时,它引起了我的问题。我没有看那里,因为我错误地认为如果那里出现问题,qml 代码将根本无法工作。很抱歉这么晚才回来,这是一个非常忙碌的一周,很抱歉浪费了带宽。感谢您提供出色的调试建议以及供将来参考!

0 投票
1 回答
596 浏览

qt - The QML MouseArea property doesn't handle the "target"

We have a project in which there are some components and one of them is named Racket.qml which is as below:

I've used that component in main.qml this way:

My purpose was just to widen the area of the Rackets but now when I run the program I can't drag the rackets!

What can the problem be please?