Изменение позиции элемента в wxListBox

Я хотел бы спросить вас, как динамически изменить положение элемента в wxListBox (например, перетащить & падение)
Я только нашел, как вставить элемент в wxListBox из примера wxWidget (загружается с wxWidgets) с именем dnd.

3

Решение

Всегда лучше начинать с точно установленного требования.

  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. Пользователь повторяется до тех пор, пока товар не окажется в нужной позиции
1

Другие решения

Если вы просто хотите позволить пользователю изменить порядок элементов в списке, рассмотрите возможность использования wxEditableListBox. Если вам действительно нужно перетаскивание, это можно реализовать, как объяснено в ответе ravenspoint, но это сложнее.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector