Pergunta

I have a QTreeView which has the ExtendedSelection attribute (users may select more than one non-contiguous range of cells).

I would like my app to allow them to select these multiple cells and then enter a value and have all the cells take that value.

My issue is that I don't know how to get the full range of cells passed to my model. Right now the index that is passed to the setData method is only the active cell, not the full range of selected cells.

In the past, I have had my view store the currently selected range in the model every time it changes, and then use that to control which cells to modify. This seems kind of hacky and I wonder whether anyone has a better and more elegant solution.

I am using PyQt by the way, though I suspect this applies to QT by itself.

Thanks!

Foi útil?

Solução

I believe you can use selectionModel method of the QAbstractItemView class to iterate through selected indexes and change values of the corresponding cells. Below is a small example:

foreach (QModelIndex index, ui->treeView->selectionModel()->selectedIndexes())
{
    qDebug() << "Changing index " << index.row();
    ui->treeView->model()->setData(index, "new data");
}

hope this helps, regards

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top