0

我想使用一个 Button 小部件来拖动一个项目。如果我使用的是标签小部件,我可以绑定到小部件并获取事件,但按钮小部件似乎会消耗所有鼠标事件。有任何想法吗?

背景:我正在创建一个网格,其中每一行都有几个按钮来执行各种操作。我希望能够通过单击拖动小部件来重新排序行,然后上下拖动小部件(携带整行)。这是我的图形用户界面:

+---+--------------+---+---+
|        Title         | + |
+---+--------------+---+---+
| - | Label widget | = | > |
+---+--------------+---+---+
| - | Label widget | = | > |
+---+--------------+---+---+
| - | Label widget | = | > |
+---+--------------+---+---+

“+”是添加行的按钮(通过弹出窗口填写数据),“-”是删除行的按钮,“>”是允许您编辑(通过弹出窗口)行数据的按钮。通过单击并拖动“=”,您可以重新排列行。目前,它是一个图像标签,但我希望它像其他控件一样是一个按钮。

4

1 回答 1

0

按钮小部件与任何其他小部件没有什么不同,只是它已经绑定了某些事件(这意味着您需要禁用它们,或者准备好使用它们)。您仍然可以将您想要的任何事件绑定到按钮,但我质疑您为什么要为此目的使用按钮。大多数人不会期望能够拖动按钮——按钮提供了能够推动它而不是拖动它的功能。

如果是我,我会把你的按钮重新排列成这样:

+---+--------------+---+---+
|        Title         | + |
+---+--------------+---+---+
| = | Label widget | > | - |
+---+--------------+---+---+
| = | Label widget | > | - |
+---+--------------+---+---+
| = | Label widget | > | - |
+---+--------------+---+---+

然后,将“= 按钮”更改为看起来可以抓取的图像。通常情况下,我认为有两到三条水平线的图像似乎是为了“抓握”。另外,我认为通过抓住末端来移动某物比抓住中间的某个地方更常见。

现在您可以抓住左边缘(可以说这是一种更自然的移动方式),并且所有添加/删除按钮都排在同一列中。另外,编辑弹出按钮紧靠正在编辑的东西,这对我来说是有道理的。

您还可以考虑将布局更改为如下所示:

+---+--------------+---+---+---+
|             Title            |
+---+--------------+---+---+---+
| = | Label widget | > | - | + |
+---+--------------+---+---+---+
| = | Label widget | > | - | + |
+---+--------------+---+---+---+
| = | Label widget | > | - | + |
+---+--------------+---+---+---+

上述的优点是它允许您在中间添加一个按钮,而不是总是在末尾添加或删除,这意味着您的用户可能会学会通过单击而不是单击来准确地添加一行和拖累。

于 2012-09-07T11:42:05.757 回答