QTreeView:一次性将所有选定的单元格设置为用户输入的值

问题描述:

我有一个具有ExtendedSelection属性的QTreeView(用户可以选择多个不连续的单元格范围)。QTreeView:一次性将所有选定的单元格设置为用户输入的值

我想我的应用程序允许他们选择这些多个单元格,然后输入一个值并让所有单元格都取这个值。

我的问题是,我不知道如何获得传递给我模型的全部单元格。现在,传递给setData方法的索引只是活动单元格,而不是所选单元格的全部范围。

过去,我已经将模型中当前选定的范围存储在模型中,并且每次改变时都使用它来控制要修改的单元格。这看起来很不好,我想知道是否有人有更好更优雅的解决方案。

我正在使用PyQt的方式,虽然我怀疑这适用于QT本身。

谢谢!

我相信你可以使用QAbstractItemView类的selectionModel方法遍历选定的索引并更改相应单元格的值。下面是一个小例子:

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

希望这会有所帮助,至于

+0

这看起来像它可能指向我的方向是正确的。谢谢。一个问题,但我在哪里称此代码?是否有一个信号我应该连接到(当前正在调用setData的同一个信号)? – bvz 2010-11-11 23:02:58

+0

是的,我相信你应该能够在你的“setdata”信号中执行这个。我已经测试过了,只需在主窗口小部件上放一个按钮并从其“on_clicked”信号处理程序中调用此代码 – 2010-11-11 23:28:53

+0

抱歉密集但您引用的setdata信号是由我的QTreeView发送的信号?我找不到任何参考。我在模型中有一个setData插槽。这是你指的是什么?如果是这样,我再次被卡住了,因为它似乎需要了解该视图以便提取选定的索引。 – bvz 2010-11-12 00:15:00