Basic usage of QAbstractTableModel::insertRows()
qt
Solution
A bit late, but anyway:
Now I wonder why I actually did this? Do views (or other components) automatically call this method?
Yes, `insertRows()` is called by the default implementation of `QAbstractItemModel::dropMimeData()`, which gets called when items from another Qt view are dropped there.
Likewise, `removeRows()` is called by the default implementation of `QAbstractItemView::startDrag()`.
I couldn't find other usages in the source.
Problem
I implemented QAbstractTableModel with the usual: ``` class PrintIntervalTableModel : public QAbstractTableModel { private: virtual int rowCount (const QModelIndex & parent = QModelIndex()) const; virtual int columnCount (const QModelIndex & parent = QModelIndex()) const; virtual QVariant data (const QModelIndex & index, int role = Qt::DisplayRole) const; virtual QVariant headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setData (const QModelIndex & index, const QVariant & value, int role = Qt::EditRole); virtual Qt::ItemFlags flags (const QModelIndex & index) const; virtual bool insertRows (int position, int rows, const QModelIndex & parent = QModelIndex()); virtual bool removeRows (int position, int rows, const QModelIndex & parent = QModelIndex()); ``` Here is my insert rows, which is pretty simple: ``` bool PrintIntervalTableModel::insertRows(int position, int rows, const QModelIndex & parent) { beginInsertRows(QModelIndex(), position, position + rows - 1); for (int row = 0; row < rows; ++row) { std::deque<moment_value_pair_type>::iterator it = printIntervalPairs.begin() + position; printIntervalPairs.insert(it, moment_value_pair_type()); } endInsertRows(); return true; } ``` Now I wonder why I actually did this? Do views (or other components) automatically call this method? I would like to have a button on the form that, once clicked, inserts a row underneath the user's current selection. Do I basically create a slot in the table (connected to button clicked()) that figures out where to insert the row, and then the slot would call table->insertRows()? Is this the type of purpose the insertRows() override is used for?