void tst_QColumnView::clicked() { ColumnView view; QDirModel model; view.setModel(&model); view.resize(800,300); view.show(); QModelIndex home = model.index(QDir::homePath()); QVERIFY(home.isValid()); view.setCurrentIndex(home); QTest::qWait(ANIMATION_DELAY); QModelIndex parent = home.parent(); QVERIFY(parent.isValid()); qRegisterMetaType<QModelIndex>("QModelIndex"); QSignalSpy clickedSpy(&view, SIGNAL(clicked(const QModelIndex &))); QPoint localPoint = view.visualRect(home).center(); QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, localPoint); QCOMPARE(clickedSpy.count(), 1); qApp->processEvents(); if (sizeof(qreal) != sizeof(double)) { QSKIP("Skipped due to rounding errors", SkipAll); } for (int i = 0; i < view.createdColumns.count(); ++i) { QAbstractItemView *column = view.createdColumns.at(i); if (column && column->selectionModel() && (column->rootIndex() == home)) QVERIFY(column->selectionModel()->selectedIndexes().isEmpty()); } }
void tst_QColumnView::rootIndex() { ColumnView view; // no model view.setRootIndex(QModelIndex()); TreeModel model; view.setModel(&model); // A top level index QModelIndex drive = model.firstLevel(); QVERIFY(view.visualRect(drive).isValid()); view.setRootIndex(QModelIndex()); QCOMPARE(view.HorizontalOffset(), 0); QCOMPARE(view.rootIndex(), QModelIndex()); QVERIFY(view.visualRect(drive).isValid()); // A item under the rootIndex exists QModelIndex home = model.thirdLevel(); QModelIndex homeFile = model.index(0, 0, home); int i = 0; while (i < model.rowCount(home) - 1 && !model.hasChildren(homeFile)) homeFile = model.index(++i, 0, home); view.setRootIndex(home); QCOMPARE(view.HorizontalOffset(), 0); QCOMPARE(view.rootIndex(), home); QVERIFY(!view.visualRect(drive).isValid()); QVERIFY(!view.visualRect(home).isValid()); if (homeFile.isValid()) QVERIFY(view.visualRect(homeFile).isValid()); // set root when there already is one and everything should still be ok view.setRootIndex(home); view.setCurrentIndex(homeFile); view.scrollTo(model.index(0,0, homeFile)); QCOMPARE(view.HorizontalOffset(), 0); QCOMPARE(view.rootIndex(), home); QVERIFY(!view.visualRect(drive).isValid()); QVERIFY(!view.visualRect(home).isValid()); if (homeFile.isValid()) QVERIFY(view.visualRect(homeFile).isValid()); // homeFile = model.thirdLevel(); home = homeFile.parent(); view.setRootIndex(home); view.setCurrentIndex(homeFile); view.show(); i = 0; QModelIndex two = model.index(0, 0, homeFile); while (i < model.rowCount(homeFile) - 1 && !model.hasChildren(two)) two = model.index(++i, 0, homeFile); qApp->processEvents(); QTest::qWait(ANIMATION_DELAY); view.setCurrentIndex(two); view.scrollTo(two); QTest::qWait(ANIMATION_DELAY); qApp->processEvents(); QVERIFY(two.isValid()); QVERIFY(view.HorizontalOffset() != 0); view.setRootIndex(homeFile); QCOMPARE(view.HorizontalOffset(), 0); }