首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含thumb微件的滑块微件的相对坐标

包含thumb微件的滑块微件的相对坐标
EN

Stack Overflow用户
提问于 2011-04-12 08:34:57
回答 1查看 101关注 0票数 1

我的滑块有一个子按钮小部件。我最近更改了我的gui,以发送相对于小部件的鼠标坐标,因此如果小部件位于50,50,而鼠标位于50,50,则现在将报告为0,0。

这给我的滑块带来了一些问题。当我在按钮周围拖动时,它会定位到值。

我想到的唯一解决方案是取给定的鼠标坐标,添加回按钮的绝对位置,然后减去滑块的绝对位置。

然而,我希望找到一种不需要绝对定位的解决方案。

我用来接收鼠标的绝对位置,当我这样做的时候,我把它定位成这样:

代码语言:javascript
复制
int mousePos = getOrientation() == AGUI_HORIZONTAL ? 
    mouseArgs.getPosition().getX() - getAbsolutePosition().getX() :
mouseArgs.getPosition().getY() - getAbsolutePosition().getY();

setValue(positionToValue(mousePos));

mouseArgs提供鼠标相对于按钮的位置。而不是相对于滑块,这是需要的。

我可以获得小部件的相对位置,但我不认为这样做是可行的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-12 09:50:42

由于这是一个自定义GUI,我将做一些假设并重申您的问题,以确保我回答了您的问题。

您有一个滑块小部件,其中包含一个thumb小部件。用户可以单击并拖动拇指来重新定位它。GUI在本地相对空间而不是绝对屏幕空间中向小部件发送鼠标通知。您的问题是,在不使用绝对坐标的情况下,thumb小部件如何响应鼠标事件来移动自己?

您可以通过更改移动thumb小部件的责任来实现这一点。定位thumb小部件应该是滑块小部件的工作。通过这样做,您的所有坐标都可以位于滑块小部件的局部相对空间中。基本上是这样的(假设你有某种事件通知):

  1. 创建时,滑块小部件在其子拇指小部件上注册各种鼠标事件。
  2. 当拇指接收鼠标事件时,它引发沿其本地coordinate.
  3. Slider小部件传递的事件接收这些事件,并将坐标从thumb本地空间转换到滑块本地空间(即,click_x = thumb_x + thumb_mouse_x).
  4. Slider随后可以使用滑块的本地相对空间中的此坐标来移动拇指。

一般来说,父母应该对孩子的布局负责。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5629105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档