Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTreeView:立即将所有选定单元格设置为用户输入的值_Qt_Set_Qtreeview - Fatal编程技术网

QTreeView:立即将所有选定单元格设置为用户输入的值

QTreeView:立即将所有选定单元格设置为用户输入的值,qt,set,qtreeview,Qt,Set,Qtreeview,我有一个QTreeView,它具有ExtendedSelection属性(用户可以选择多个非连续的单元格区域) 我希望我的应用程序允许他们选择这些多个单元格,然后输入一个值,并让所有单元格都接受该值 我的问题是,我不知道如何将全部细胞传递给我的模型。现在,传递给setData方法的索引只是活动单元格,而不是全部选定单元格 过去,我让视图在每次更改时将当前选定的范围存储在模型中,然后使用该范围控制要修改的单元格。这似乎有点老套,我想知道是否有人有更好更优雅的解决方案 顺便说一句,我正在使用PyQt

我有一个QTreeView,它具有ExtendedSelection属性(用户可以选择多个非连续的单元格区域)

我希望我的应用程序允许他们选择这些多个单元格,然后输入一个值,并让所有单元格都接受该值

我的问题是,我不知道如何将全部细胞传递给我的模型。现在,传递给setData方法的索引只是活动单元格,而不是全部选定单元格

过去,我让视图在每次更改时将当前选定的范围存储在模型中,然后使用该范围控制要修改的单元格。这似乎有点老套,我想知道是否有人有更好更优雅的解决方案

顺便说一句,我正在使用PyQt,尽管我怀疑这本身适用于QT

谢谢

我相信您可以使用QabstratemView类的方法来迭代选定的索引并更改相应单元格的值。下面是一个小例子:

foreach (QModelIndex index, ui->treeView->selectionModel()->selectedIndexes())
{
    qDebug() << "Changing index " << index.row();
    ui->treeView->model()->setData(index, "new data");
}
foreach(QModelIndex索引,ui->treeView->selectionModel()->selectedindex())
{
qDebug()model()->setData(索引,“新数据”);
}

希望这能有所帮助,这看起来可能会给我指明正确的方向。谢谢但有一个问题,我把这个代码叫什么?是否有我应该连接的信号(与当前调用setData的信号相同)?是的,我相信您应该能够在“setData”信号中执行此操作。我已经通过简单地在主窗口小部件上放置一个按钮并从其“点击”信号手柄调用此代码来测试了这一点。很抱歉,很密集,但是您所指的setdata信号。。。这是我的QTreeView发出的信号吗?我找不到它的任何参考资料。我在模型中有一个setData插槽。这就是你所指的吗?如果是这样的话,我又一次陷入困境,因为似乎模型需要了解视图才能提取选定的索引。我指的是你所说的“当前调用setData的同一个”的任何信号。是的,我不确定该信号是什么。当我为QTreeView设置dataModel时,它会自动调用setData,我不确定信号是什么。在任何情况下,我都会将您的答案标记为我正在寻找的答案,因为它在selectionModel中占据了大部分的位置。谢谢