void CSVSettings::View::buildUpdatableValueModel (const QStringList &values) { //updateable models are standard item models because they support //replacing entire columns QList <QStandardItem *> itemList; foreach (const QString &value, values) itemList.append (new QStandardItem(value)); QStandardItemModel *model = new QStandardItemModel (this); model->appendColumn (itemList); mDataModel = model; }
void CSVSettings::View::setSelectedValues (const QStringList &list, bool doViewUpdate, bool signalUpdate) const { QItemSelection selection; if (stringListsMatch (list, selectedValues())) return; if (!mHasFixedValues) { QStandardItemModel *model = static_cast <QStandardItemModel *>(mDataModel); model->clear(); model->appendColumn (toStandardItemList (list)); for (int i = 0; i < model->rowCount(); i++) { QModelIndex idx = model->index(i, 0); selection.append (QItemSelectionRange (idx, idx)); } } else { for (int i = 0; i < mDataModel->rowCount(); i++) { if (list.contains(value(i))) { QModelIndex idx = mDataModel->index(i, 0); selection.append(QItemSelectionRange (idx, idx)); } } } select (selection); //update the view if the selection was set from the model side, not by the //user if (doViewUpdate) updateView (signalUpdate); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QStandardItemModel model; for ( int col = 0; col < 3; col++ ) { QList<QStandardItem*> list; for ( int row = 0; row < 5; row++ ) { list.append(new QStandardItem); } model.appendColumn(list); } TableView view; view.setModel(&model); view.show(); return a.exec(); }