gpt4 book ai didi

qt - 如何在QAbstractItemView中获取可见QModelIndex的列表

转载 作者:行者123 更新时间:2023-12-04 13:23:32 25 4
gpt4 key购买 nike

有什么方法可以在 QAbstractItemView 中获取当前可见项目的列表?并且,如果可能,接收有关更改此列表的任何通知。

更新:
我问的是关于 QAbstractItemViewQTreeView具有非平面结构,不是 QTableView .

更新2:
我正在使用复选框实现树 View 模型。我想要下一个行为(检查/取消检查相同):

  • 如果复选框中的一个被选中 - 那么所有的 child 都必须被选中
  • 如果所有子复选框都被选中 - 那么父复选框也应该被选中。对于父级的父级也是如此,依此类推...

  • 检查状态由外部数据源监视/修改,因此我需要一种机制来更新所有更改的子项/父项。 dataChanged信号对我来说还不够,因为构建所有更改的列表非常广泛 QModelIndex用于更新。而且完全没有必要,因为所有新数据都将从 QAbstractItemModel::data 中挑选出来。 .

    我发现下一个肮脏的黑客来更新所有项目: emit dataChanged( QModelIndex(), QModelIndex() );但它没有记录无效索引。

    所以,我需要一种方法来强制所有可见项目用新数据重绘它们的内容。

    最佳答案

    您可以通过调用获取左上角和右下角的单元格:

    tableview->indexAt(tableview->rect().topLeft())
    tableview->indexAt(tableview->rect().bottomRight())

    要获得更改通知,请重新实现 qabstractscrollarea 的虚拟功能
    scrollContentsBy

    当 View 端口滚动时调用此函数。
    调用 QTableView::scrollContentsBy 然后做任何你需要的事情。

    关于qt - 如何在QAbstractItemView中获取可见QModelIndex的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817429/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com