void tst_QColumnView::swapPreview() { // swap the preview widget in updatePreviewWidget QColumnView view; QStringList sl; sl << QLatin1String("test"); QStringListModel model(sl); view.setModel(&model); view.setCurrentIndex(view.indexAt(QPoint(1, 1))); connect(&view, SIGNAL(updatePreviewWidget(const QModelIndex &)), this, SLOT(setPreviewWidget())); view.setCurrentIndex(view.indexAt(QPoint(1, 1))); QTest::qWait(ANIMATION_DELAY); qApp->processEvents(); }
void tst_QColumnView::sizes() { QColumnView view; QCOMPARE(view.columnWidths().count(), 0); QList<int> newSizes; newSizes << 10 << 4 << 50 << 6; QList<int> visibleSizes; view.setColumnWidths(newSizes); QCOMPARE(view.columnWidths(), visibleSizes); QDirModel model; view.setModel(&model); QModelIndex home = model.index(QDir::homePath()); view.setCurrentIndex(home); QList<int> postSizes = view.columnWidths().mid(0, newSizes.count()); QCOMPARE(postSizes, newSizes.mid(0, postSizes.count())); QVERIFY(view.columnWidths().count() > 1); QList<int> smallerSizes; smallerSizes << 6; view.setColumnWidths(smallerSizes); QList<int> expectedSizes = newSizes; expectedSizes[0] = 6; postSizes = view.columnWidths().mid(0, newSizes.count()); QCOMPARE(postSizes, expectedSizes.mid(0, postSizes.count())); }
void tst_QColumnView::preview() { QColumnView view; QCOMPARE(view.previewWidget(), (QWidget*)0); TreeModel model; view.setModel(&model); QCOMPARE(view.previewWidget(), (QWidget*)0); QModelIndex home = model.index(0, 0); QVERIFY(home.isValid()); QVERIFY(model.hasChildren(home)); view.setCurrentIndex(home); QCOMPARE(view.previewWidget(), (QWidget*)0); QModelIndex file; QVERIFY(model.rowCount(home) > 0); for (int i = 0; i < model.rowCount(home); ++i) { if (!model.hasChildren(model.index(i, 0, home))) { file = model.index(i, 0, home); break; } } QVERIFY(file.isValid()); view.setCurrentIndex(file); QVERIFY(view.previewWidget() != (QWidget*)0); QWidget *previewWidget = new QWidget(&view); view.setPreviewWidget(previewWidget); QCOMPARE(view.previewWidget(), previewWidget); QVERIFY(previewWidget->parent() != ((QWidget*)&view)); view.setCurrentIndex(home); // previewWidget should be marked for deletion QWidget *previewWidget2 = new QWidget(&view); view.setPreviewWidget(previewWidget2); QCOMPARE(view.previewWidget(), previewWidget2); }
void tst_QColumnView::indexAt() { QColumnView view; QCOMPARE(view.indexAt(QPoint(0,0)), QModelIndex()); QDirModel model; view.setModel(&model); QModelIndex home = model.index(QDir::homePath()); QModelIndex homeFile = model.index(0, 0, home); if (!homeFile.isValid()) return; view.setRootIndex(home); QRect rect = view.visualRect(QModelIndex()); QVERIFY(!rect.isValid()); rect = view.visualRect(homeFile); QVERIFY(rect.isValid()); QModelIndex child; for (int i = 0; i < model.rowCount(home); ++i) { child = model.index(i, 0, home); rect = view.visualRect(child); QVERIFY(rect.isValid()); if (i > 0) QVERIFY(rect.top() > 0); QCOMPARE(view.indexAt(rect.center()), child); view.selectionModel()->select(child, QItemSelectionModel::SelectCurrent); view.setCurrentIndex(child); qApp->processEvents(); QTest::qWait(200); // test that the second row doesn't start at 0 if (model.rowCount(child) > 0) { child = model.index(0, 0, child); QVERIFY(child.isValid()); rect = view.visualRect(child); QVERIFY(rect.isValid()); QVERIFY(rect.left() > 0); QCOMPARE(view.indexAt(rect.center()), child); break; } } }