通过将项目放在窗口小部件外部,从QListWidget中删除项目?

时间:2012-02-12 23:33:21

标签: qt drag-and-drop qlistwidget

我已经在网上搜索了实现这一点的可能性,但还没有找到解决方案。是否有一种简单的方法可以从列表中删除放在非接收区域甚至是应用程序窗口之外的项目?

到目前为止,我接受了删除键,用于通过快捷方式删除项目:

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

但是,由于我通过拖放操作将项目添加到列表中,我希望能够以相同的方式删除它们。列表中的项目也可以通过拖放进行订购。

任何提示或链接都表示赞赏。

1 个答案:

答案 0 :(得分:1)

这似乎对我有用:

  • 拖放操作应为Qt::MoveAction
  • 确保QListWidget的父级(例如QDialog)具有以下内容:
    • dragEnterEvent()已实施
    • dropEvent()已实施(忽略此处的mime数据)
    • setAcceptDrops(true);

忽略dropEvent()Qt::MoveAction中的mime数据应该等同于项目删除操作。

祝你好运!