【问题标题】:Changing the position of an item in wxListBox更改 wxListBox 中项目的位置
【发布时间】:2012-10-31 12:36:44
【问题描述】:

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

【问题讨论】:

    标签: c++ drag-and-drop wxwidgets


    【解决方案1】:

    如果您只想允许用户对列表框中的项目重新排序,请考虑使用wxEditableListBox。如果您确实需要拖放,应该可以按照 ravenpoint 的回答中的说明来实现它,但它更难。

    【讨论】:

      【解决方案2】:

      最好从明确规定的要求开始。

      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. 用户重复,直到项目位于所需位置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多