繁体   English   中英

在QAbstractItemView中查找拖放操作的结尾

[英]Finding the end of a Drag and Drop operation in QAbstractItemView

我创建了QSortFilterProxyModel继承的自定义代理模型。 我上面提到的代理模型的源模型也是QAbstractTableModel继承的自定义模型。 然后,将我的自定义代理模型设置为QTableView。

在此自定义代理模型中,我重新实现了mimeData(..)函数。 如下。

QMimeData* CustomProxyModel::mimeData( const QModelIndexList & rListIndexes ) const
{
    QMimeData *pMimeData = new QMimeData();

    //some code here

    connect(pMimeData, SIGNAL( destroyed(QObject*) ), this, SLOT( OnDestroyDraggedItem() ) );

    return pMimeData;
}

在Qt4.7中,用户将QTableView的某个项放到某个位置后不久,就调用了OnDestroyDraggedItem()插槽。 换句话说,在拖放操作后不久将删除QMimeData对象。

但是在Qt 5.1中,从不调用OnDestroyDraggedItem()插槽。 换句话说,在拖放操作之后,绝不会删除QMimeData对象。

难道我做错了什么? 还是Qt 5.1拖放操作后发生内存泄漏? 还有另一种方法可以找到拖放操作的终点吗?

也许QMimeData晚-但是您不能只继承QMimeData并在析构函数中执行某些操作吗? 当然应该是小而安全的代码-在析构函数中抛出异常会导致奇怪的行为:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM