我實現QAbstractTableModel與通常的:QAbstractTableModel :: 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());
這裏是我的插入行,這是非常簡單的:
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;
}
現在我不知道爲什麼我居然做過這個?視圖(或其他組件)是否自動調用此方法?
我想在窗體上有一個按鈕,一旦點擊就在用戶的當前選擇下插入一行。我是否基本上在表中創建一個插槽(連接到按鈕clicked()),它計算出插入行的位置,然後該插槽將調用table-> insertRows()?這是insertRows()覆蓋用於的目的類型嗎?