LINUX.ORG.RU

Копирование строк в QTableView

 , ,


0

1

Всем доброй ночи. Буду краток.

Есть связка QTableView+QSqlTableModel, никак не могу реализовать копирование содержимого одной строки (целиком) в несколько других, путаюсь в QModelIndex'ах. Гугл не помогает вообще никак, в доках нужной функции не нашёл.

Вопрос вынесен в сабж. Буду благодарен за подсказку.

Подсказка будет благодарна за кусок кода, где выполняется копирование

XMs ★★★★★
()
Ответ на: комментарий от XMs

В общем, нужно скопировать первую выделенную строку в остальные выделенные.

Ну, так как оператор «=» никакого результата не дал, как и попытка сделать так:

indexTo.model()->setData(indexTo, indexFrom.model().data()); 

решил копировать каждую ячейку вручную. Я знаю, что это говнокод:

QModelIndexList list = ui->stuffTable->selectionModel()->selectedRows(); //выделенные ячейки
QString myData;
QModelIndex myIndexFrom, myIndexTo;


for(int i=1; i < list.size(); i++)
for(int y=0; y<21;y++){ //в строке 21 столбец, я знаю, что хардкод - это плохо
        myIndexFrom = ui->stuffTable->model()->index(list[0].row(), y, QModelIndex());//сохранение ячейки, откуда идёт копирование
        myData = ui->stuffTable->model()->data(myIndexFrom).toString(); //информация из неё
        myIndexTo = ui->stuffTable->model()->index(list[i].row(), y, QModelIndex());
        myIndexTo.model()->setData(myIndexFrom, myData);
}

Код переворочен и ужасен. Но вы сами попросили :)

Zoominger
() автор топика

Проблема решена, вот код, если кому надо.

    QModelIndexList list = ui->table->selectionModel()->selectedRows();
    QString myData;
    QModelIndex myIndex, myIndex2;

    for(int i=1; i<list.size(); i++){//у каждой строки
        for(int y=0; y<21;y++){//взять каждую ячейку
            myIndex = ui->table->model()->index(list[i].row(), y, QModelIndex()); //Куда копируем
            myIndex2 = ui->table->model()->index(list[0].row(), y, QModelIndex()); //откуда
            myData = ui->table->model()->data(myIndex2).toString(); //содержимое (можно QVariant)
            ui->table->model()->setData(myIndex, myData); //тадам-с!
        }
    }
 

Zoominger
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.