Привет!
У меня возникла необходимость в копировании строк в таблице, при этом копию вставлять в конец таблицы. Вот, написал следующий код в духе MVC. Но он кажется каким то громоздким и нелепым:
void Editor::onCopy()
{
QTableView* t = getTable(m_tabs);
if (!t)
return;
QModelIndex index = t->currentIndex();
if (!index.isValid())
return;
const int row = index.row();
QAbstractItemModel* m = t->model();
const int cols = m->columnCount();
QVector<QVariant> buf;
buf.reserve(cols);
int i;
for (i = 0; i < cols; i++)
buf.append(m->data(m->index(row, i)));
const int rows = t->model()->rowCount();
if (!t->model()->insertRow(rows))
return;
for (i = 0; i < cols; i++)
m->setData(m->index(rows, i), buf.at(i));
index = t->model()->index(rows, 0);
t->setCurrentIndex(index);
t->edit(index);
}
Кажется, гораздо проще в модель добавить ф-цию копирования, что бы избежать уйму ненужных действий.