Поиск конца операции перетаскивания в 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 произошла утечка памяти после операции перетаскивания? Есть ли другой способ найти конец операции перетаскивания?
1 ответ
Может быть, немного поздно - но ты не можешь просто унаследовать QMimeData
и сделать что-нибудь в деструкторе? Конечно, код должен быть небольшим и безопасным - создание исключений в деструкторах может вызвать странное поведение:)