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::grips() { QColumnView view; QDirModel model; view.setModel(&model); QCOMPARE(view.resizeGripsVisible(), true); view.setResizeGripsVisible(true); QCOMPARE(view.resizeGripsVisible(), true); { const QObjectList list = view.viewport()->children(); for (int i = 0 ; i < list.count(); ++i) { if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(list.at(i))) QVERIFY(view->cornerWidget() != 0); } } view.setResizeGripsVisible(false); QCOMPARE(view.resizeGripsVisible(), false); { const QObjectList list = view.viewport()->children(); for (int i = 0 ; i < list.count(); ++i) { if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(list.at(i))) { if (view->isVisible()) QVERIFY(view->cornerWidget() == 0); } } } view.setResizeGripsVisible(true); QCOMPARE(view.resizeGripsVisible(), true); }
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::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; } } }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QStandardItemModel model; QStandardItem *name = new QStandardItem("Name"); QStandardItem *firstName = new QStandardItem("First Name"); QStandardItem *lastName = new QStandardItem("Last Name"); name->appendRow(firstName); name->appendRow(lastName); model.appendRow(name); QStandardItem *john = new QStandardItem("John"); QStandardItem *smith = new QStandardItem("Smith"); firstName->appendRow(john); lastName->appendRow(smith); QStandardItem *address = new QStandardItem("Address"); QStandardItem *street = new QStandardItem("Street"); QStandardItem *city = new QStandardItem("City"); QStandardItem *state = new QStandardItem("State"); QStandardItem *country = new QStandardItem("Country"); address->appendRow(street); address->appendRow(city); address->appendRow(state); address->appendRow(country); model.appendRow(address); QColumnView columnView; columnView.setModel(&model); columnView.show(); return app.exec(); }
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); }