我想问你如何动态更改wxListBox中项目的位置(例如拖放) 我刚刚找到了如何从wxWidget样本(用wxWidgets下载)中将项目插入wxListBox,名为dnd。
答案 0 :(得分:2)
如果您只是想让用户重新排序列表框中的项目,请考虑使用wxEditableListBox。如果你真的需要拖放,应该可以像ravenspoint的答案中所解释的那样实现它,但它更难。
答案 1 :(得分:1)
最好从精确陈述的要求开始。
第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.现在,在所有鼠标处理之后,您应该在移动之前或之后插入移动的项目和项目(您的呼叫)清除列表框,然后按新顺序插入项目。
所有这些似乎都是一个很大的麻烦。这个功能是否重要?您是否可以接受一个更简单的用户界面,只需编写一小部分代码即可完成工作,并且需要进行测试和调试?
这样的事情: