Russian Qt Forum
Сентябрь 30, 2024, 22:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Копирование строк в QTableView  (Прочитано 4116 раз)
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);
}
Кажется, гораздо проще в модель добавить ф-цию копирования, что бы избежать уйму ненужных действий.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Ноябрь 06, 2010, 00:43 »

Лучше перенести, это все таки к модели относится..
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
crossly
Гость
« Ответ #2 : Ноябрь 06, 2010, 20:46 »

+ использовать QSqlRecord
Записан
DmP
Гость
« Ответ #3 : Ноябрь 06, 2010, 21:57 »

Спасибо за советы. Кстати QSqlRecord это тот же QVector<QSqlField>, а QSqlField тот же QVariant.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.