【发布时间】:2012-10-31 12:36:44
【问题描述】:
我想问你如何动态改变 wxListBox 中项目的位置(例如拖放) 我只找到了如何从名为 dnd 的 wxWidget 示例(使用 wxWidgets 下载)中将项目插入 wxListBox。
【问题讨论】:
标签: c++ drag-and-drop wxwidgets
我想问你如何动态改变 wxListBox 中项目的位置(例如拖放) 我只找到了如何从名为 dnd 的 wxWidget 示例(使用 wxWidgets 下载)中将项目插入 wxListBox。
【问题讨论】:
标签: c++ drag-and-drop wxwidgets
如果您只想允许用户对列表框中的项目重新排序,请考虑使用wxEditableListBox。如果您确实需要拖放,应该可以按照 ravenpoint 的回答中的说明来实现它,但它更难。
【讨论】:
最好从明确规定的要求开始。
第 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 步。现在,在所有鼠标处理之后,您应该在(您的调用)之前或之后插入已移动的项目和要插入的项目。清除列表框,然后按新顺序插入项目。
所有这一切似乎都带来了很大的麻烦。这个功能真的那么重要吗?您能否接受一个更简单的用户界面,只需完成所需的编码、测试和调试工作的一小部分即可完成工作?
类似这样的:
【讨论】: