У меня реализована своя модель, унаследованная от QAbstractItemModel. В QModelIndex я храню не только row и column, но и указатель на объект, к которому относится этот индекс. Если объект удалить, то индекс будет содержать в себе ссылку на удаленный объект.
Приложение падает, когда курсор стоит на элементе.
удаляются элементы внутри beginRemove/endRemove
по стеку вызовов:
.exe!StatTreeCtrl::parent(const QModelIndex & index)Строка 173 C++
Qt5Cored.dll!QModelIndex::parent()Строка 417 C++
Qt5Widgetsd.dll!QTreeView::drawRow(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index)Строка 1672 C++
Qt5Widgetsd.dll!QTreeView::drawTree(QPainter * painter, const QRegion & region)Строка 1511 C++
Qt5Widgetsd.dll!QTreeView::paintEvent(QPaintEvent * event)Строка 1340 C++
Qt5Widgetsd.dll!QWidget::event(QEvent * event)Строка 8938 C++
Qt5Widgetsd.dll!QFrame::event(QEvent * e)Строка 550 C++
Qt5Widgetsd.dll!QAbstractScrollArea::viewportEvent(QEvent * e)Строка 1213 C++
Qt5Widgetsd.dll!QAbstractItemView::viewportEvent(QEvent * event)Строка 1748 C++
Qt5Widgetsd.dll!QTreeView::viewportEvent(QEvent * event)Строка 1321 C++
Qt5Widgetsd.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event)Строка 111 C++
Qt5Widgetsd.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o, QEvent * e)Строка 127 C++
Qt5Cored.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver, QEvent * event)Строка 1099 C++
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e)Строка 3795 C++
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e)Строка 3762 C++
Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event)Строка 988 C++
Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event)Строка 234 C++
Qt5Widgetsd.dll!QWidgetPrivate::sendPaintEvent(const QRegion & toBePainted)Строка 5708 C++
> Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, int flags, QPainter * sharedPainter, QWidgetBackingStore * backingStore)Строка 5649 C++
Qt5Widgetsd.dll!QWidgetBackingStore::doSync()Строка 1395 C++
Qt5Widgetsd.dll!QWidgetBackingStore::sync()Строка 1180 C++
Qt5Widgetsd.dll!QWidgetPrivate::syncBackingStore()Строка 1964 C++
Qt5Widgetsd.dll!QWidget::event(QEvent * event)Строка 9101 C++
Qt5Widgetsd.dll!QMainWindow::event(QEvent * event)Строка 1544 C++
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e)Строка 3799 C++
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e)Строка 3762 C++
Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event)Строка 988 C++
Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver, QEvent * event)Строка 231 C++
Qt5Cored.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data)Строка 1649 C++
Qt5Cored.dll!QEventDispatcherWin32::sendPostedEvents()Строка 1295 C++
qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents()Строка 82 C++
Qt5Cored.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned __int64 wp, __int64 lp)Строка 445 C++
что происходит
1) курсор на элементе который хочет удалиться
2) элемент удаляется (удаление завернуто в бегин и энд (все как Qt советует)
3) приложение падает
почему так происходит?
ps как вставить спойлер?