2012-10-31 62 views
3

我想问你如何动态更改wxListBox中项目的位置(例如,拖动&下拉) 我只找到了如何从wxWidget示例中将项目插入到wxListBox中(用wxWidgets下载)称为dnd。更改wxListBox中项目的位置

回答

1

总是最好从精确的要求开始。

  1. 用户在列表框中选择项目要移动
  2. 用户表示,他希望该项目拖动到新的位置
  3. 用户在列表框中选择项与拖动项目来替换
  4. 申请重新排列物品列表框按要求。

第1步似乎很简单。我想你不需要帮助?

第2步是最棘手的。您将需要处理鼠标事件,以便检测用户何时通过项目拖动鼠标。这里是鼠标事件类的文档http://docs.wxwidgets.org/trunk/classwx_mouse_event.html为了拉开这个诀窍,你需要理解大部分内容!

第3步也很棘手。当用户在拖动之后释放按钮时,您需要从事件中获取鼠标位置,并在释放按钮时计算鼠标下的项目。你需要一个HitTest方法。 wxListBox有一个吗?我怀疑不是!也许你应该考虑使用wxListCtrl,而不是试图构建自己的。 http://docs.wxwidgets.org/trunk/classwx_list_ctrl.html#ac346d7aa18722fb54580d4c4ed5cf113

第4步。现在,在完成所有鼠标处理后,您应该在移动之前或之后插入移动的项目和项目(您的呼叫)清除列表框,然后按新顺序插入项目。

这一切似乎是一个很大的麻烦。这个功能很重要吗?你能接受一个更简单的用户界面,它能够完成一小部分编码和测试工作,并且需要进行调试吗?

像这样:

  1. 用户选择项目移动
  2. 用户选择移动项向上或向下(向上/向下箭头键,左/右鼠标按钮,滚轮,这些都是可行)
  3. 所选项目向上或向下
  4. 用户重复,直到产品在需要的位置应用移动
2

如果你只是婉t允许用户重新排列列表框中的项目,请考虑使用wxEditableListBox。如果你真的需要拖放,应该可以按照ravenspoint的答案中的解释来实现它,但是它更困难。

相关问题