2012-10-31 51 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的答案中的解釋來實現它,但是它更困難。

相關問題