Question

When subclassing QAbstractTableModel, what's the proper way to get a QModelIndex for a given row and column (for example, to provide a convenience method data(int row, int column))?

There's index() and createIndex() - they both seem to do that?

Example:

TableModel::data(int row, int column, int role) const
{
    return data(index(row, column), role);
}
Was it helpful?

Solution

What you want is index(), createIndex() is what subclasses use to generate indexes. However, QModelIndex has a data() member. So, model->index(row, column).data(role) may be what you want. No need for a helper function.

OTHER TIPS

I would say index() is the idiomatic way here, your code is then correct.

Generally, createIndex() is used in subclass of QAbstractItemModel, when you need to override index() and parent() methods. Since QModelIndex constructor is private, you have to use createIndex() to create a new index.

Furthermore, a QModelIndex can store some internal data (QModelIndex::internalPointer). createIndex() is also used to pass an internal pointer to the created QModelIndex.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top