Удалить элемент из QListWidget, удалив его за пределы виджета? - PullRequest
1 голос
/ 13 февраля 2012

Я искал в Интернете возможности реализовать это, но не нашел решения. Есть ли простой способ удалить элемент из списка, который пропущен в непринятой области или даже за пределами окна приложения?

Пока я принимаю клавишу удаления для удаления элементов с помощью ярлыка:

QShortcut *shortcut = new QShortcut(QKeySequence(Qt::Key_Delete), myList);
shortcut->setContext(Qt::WidgetShortcut);
connect(shortcut, SIGNAL(activated()), this, SLOT(deleteSelection()));

Но так как я добавляю элементы в список с помощью перетаскивания, я бы тоже хотел удалить их таким же образом. Элементы в списке также можно упорядочить с помощью перетаскивания.

Любые советы или ссылки приветствуются.

1 Ответ

1 голос
/ 01 марта 2012

Мне кажется, это работает:

  • Действие перетаскивания должно быть Qt::MoveAction
  • Убедитесь, что родительский элемент QListWidget (например, QDialog) имеет следующее:
    • dragEnterEvent() реализовано
    • dropEvent() реализовано (игнорируйте данные MIME здесь)
    • setAcceptDrops(true);

Игнорирование данных MIME в dropEvent() в Qt::MoveAction должно быть эквивалентно операции удаления элемента.

Удачи!

...