gpt4 book ai didi

c++ - 在 QAbstractItemView 中查找拖放操作的结束

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:17 26 4
gpt4 key购买 nike

我创建了由 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 并在析构函数中做一些事情吗?当然应该是小而安全的代码——在析构函数中抛出异常会导致奇怪的行为:)

关于c++ - 在 QAbstractItemView 中查找拖放操作的结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com