如何管理从drop事件接收的mime数据

时间:2016-04-28 08:24:29

标签: c++ qt qt5

考虑在Qt中处理drop事件的典型方法,其中我的小部件检查drop事件中包含的mime数据,然后相应地采取行动:

void MyWidget::dropEvent(QDropEvent *event)
{
    // check if the event mime data is the kind this widget can process
    if(event->mimeData()->hasUrls()) {
        event->acceptProposedAction();
        const QMimeData* mData = event->mimeData();
        // process data...
    }

}

假设MyWidget是一些虚拟UI元素,我真的不希望它包含太多逻辑。我想验证事件,然后将mime数据转发给负责实际处理逻辑的另一个类似控制器的对象。

我发现这个问题比预期的更多有问题。

谁拥有QMimeData对象的所有权? QDropEvent?如果是,那么什么时候删除了事件? QDropEvent可能计划由Qt删除,因此必须将mime数据的生命周期限制为dropEvent()方法。 那么,我可以只制作一个mime数据的副本并传递它。但不幸的是QMimeData没有复制构造函数或赋值....

到目前为止我做得对吗? 我该如何处理这种情况? 我试图在这里与框架作斗争还是有一种规范的方法来实现这个目标?

0 个答案:

没有答案