diff options
Diffstat (limited to 'tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp')
-rw-r--r-- | tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp index 9e9431520f..a63ca49cbb 100644 --- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp @@ -153,6 +153,7 @@ private slots: void testClickToSelect(); void testDialogAsEditor(); void QTBUG46785_mouseout_hover_state(); + void testClearModelInClickedSignal(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -2270,5 +2271,29 @@ void tst_QAbstractItemView::QTBUG46785_mouseout_hover_state() QTRY_VERIFY(delegate.m_paintedWithoutHover); } +void tst_QAbstractItemView::testClearModelInClickedSignal() +{ + QStringList list{"A", "B"}; + QStringListModel model(list); + + QListView view; + view.setModel(&model); + view.show(); + + QWidget::connect(&view, &QListView::clicked, [&view](const QModelIndex &index) + { + view.setModel(nullptr); + QCOMPARE(index.data().toString(), QStringLiteral("B")); + }); + + QModelIndex index = view.model()->index(1, 0); + QVERIFY(index.isValid()); + QPoint p = view.visualRect(index).center(); + + QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, p); + + QCOMPARE(view.model(), nullptr); +} + QTEST_MAIN(tst_QAbstractItemView) #include "tst_qabstractitemview.moc" |