【问题标题】:I want to extend dropEvent() (QListWidget), should I completely reimplement it?我想扩展 dropEvent() (QListWidget),我应该完全重新实现它吗?
【发布时间】:2012-09-12 12:44:53
【问题描述】:

我有一个 QListWidget,我已经将它设置为接受 drop,模式为 DragDrop 等,我可以在整个地方移动 QListWidgetItems(当然是在 QListWidget 内)。

我喜欢这种行为,我希望它保持原样,但我也希望我的 QListWidget 也接受来自 QTreeWidget 的丢弃。如果我尝试重新实现 QListWidget 的 dropEvent(),那么我将失去默认行为。

有什么方法可以扩展当前行为,以便在 listwidget 项目之间拖放和从 treewidget 拖放到 listwidget 或者我必须在我的 dropEvent() 重新实现中完全重写这两种行为?

非常感谢您的任何回答:)

【问题讨论】:

    标签: qt drag-and-drop implementation qlistwidget


    【解决方案1】:

    两种方式:

    1. 实现一个独立的event filter 并使其作用于QEvent::DropInstall it 在您原来的 QListWidget 上。返回 false 以便之后调用原始的 dropEvent() 处理程序。

    2. QListWidget 继承,重新实现dropEvent(evt),最后调用QListWidget::dropEvent(evt);。您的原始行为将被保留。

    【讨论】:

    • 谢谢你们,我将如何区分 listwidget 和 treewidget 项目,而它们都返回 application/x-qabstractitemmodeldatalist 作为 mime 类型?
    • QDropEvent->source()->inherits("QTreeWidget")
    【解决方案2】:

    没有。

    子类QListWidget,重新实现

    virtual void    QListWidget::dropEvent ( QDropEvent * event )
    

    并显式调用

    QListWidget::dropEvent(event);
    

    当您需要默认行为时。

    How to call a parent class function from derived class function?

    【讨论】:

    • 谢谢你们,我将如何区分 listwidget 和 treewidget 项目,而它们都返回 application/x-qabstractitemmodeldatalist 作为 mime 类型?
    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多