gpt4 book ai didi

c++ - 包含拇指小部件的 slider 小部件的相对坐标

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:58 24 4
gpt4 key购买 nike

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

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

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

然而,我希望有一个不涉及绝对定位的解决方案。

我过去常常接收鼠标的绝对位置,当我这样做时,我这样定位它:

int mousePos = getOrientation() == AGUI_HORIZONTAL ? 
mouseArgs.getPosition().getX() - getAbsolutePosition().getX() :
mouseArgs.getPosition().getY() - getAbsolutePosition().getY();

setValue(positionToValue(mousePos));

mouseArgs 给出鼠标相对于按钮的位置。与 slider 无关,这是需要的。

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

谢谢

最佳答案

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

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

您可以通过更改负责移动缩略图小部件的人员来实现此目的。 slider 小部件的工作应该是定位其拇指小部件。通过这样做,您的所有坐标都可以位于 slider 小部件的本地相对空间中。基本上它会是这样的(假设你有某种事件通知):

  1. 创建后, slider 小部件会在其子缩略图小部件上注册各种鼠标事件。
  2. 当拇指接收到鼠标事件时,它会引发沿其局部坐标传递的事件。
  3. slider 小部件接收这些事件并将坐标从拇指局部空间转换到 slider 局部空间(即,click_x = thumb_x + thumb_mouse_x)。
  4. Slider 然后可以使用这个位于 slider 局部相对空间中的坐标来移动拇指。

一般来说, parent 应对 child 的布局负责。

关于c++ - 包含拇指小部件的 slider 小部件的相对坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5629105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com