jmalicke
4th July 2014, 18:45
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) 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 manually calls table->insertRows()?
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) 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 manually calls table->insertRows()?