[英]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.