Russian Qt Forum

Qt => Model-View (MV) => Тема начата: DmP от Ноябрь 06, 2010, 00:18



Название: Копирование строк в QTableView
Отправлено: DmP от Ноябрь 06, 2010, 00:18
Привет!
У меня возникла необходимость в копировании строк в таблице, при этом копию вставлять в конец таблицы. Вот, написал следующий код в духе 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);
}
Кажется, гораздо проще в модель добавить ф-цию копирования, что бы избежать уйму ненужных действий.


Название: Re: Копирование строк в QTableView
Отправлено: kibsoft от Ноябрь 06, 2010, 00:43
Лучше перенести, это все таки к модели относится..


Название: Re: Копирование строк в QTableView
Отправлено: crossly от Ноябрь 06, 2010, 20:46
+ использовать QSqlRecord


Название: Re: Копирование строк в QTableView
Отправлено: DmP от Ноябрь 06, 2010, 21:57
Спасибо за советы. Кстати QSqlRecord это тот же QVector<QSqlField>, а QSqlField тот же QVariant.