gpt4 book ai didi

qt - 从 QSortFilterProxyModel 的索引中获取源模型的项

转载 作者:行者123 更新时间:2023-12-04 10:23:08 27 4
gpt4 key购买 nike

我有一个包含 QTreeView 的应用程序其底层模型,比如 MyModel源自 QStandardItemModel .为了从 View 中过滤掉MyModel的一些项目, 我把它插到 QSortFilterProxyModel依次插入 QTreeView .当我需要从我的代理模型的给定索引中获取源模型的一项时,我总是必须这样编码:

auto my_model = dynamic_cast<MyModel*>(proxy_model->sourceModel());
auto source_index = proxy_model->mapToSource(proxy_index);
auto item = my_model->itemFromIndex(source_index);

我没有找到任何直接的方法来做到这一点。您是否知道更直接的方法来做到这一点,或者是我在使用 Qt 代理模型概念的方式中理解某些东西的迹象?

最佳答案

您正在正确使用它 - 您正在执行的步骤没有内置的快捷方式。

您可以使用 qobject_cast如果 MyModel 加快速度有 Q_OBJECT宏,但除此之外,这就是如何使用模型。

对于这样的情况,我通常在使用模型的类上创建一个包装方法或扩展 QSortFilterProxyModel要有这样的方法。例如,您可以创建一个 StandardSortFilterProxyModel扩展前者并且只接受 QStandardItemModel基于类并提供了一系列方法来以您需要的方式访问项目。

请注意,如果您只想从模型中获取特定数据而不是项目本身(如所选列的文本),您始终可以使用 proxy_model->data(proxy_index)直接从 QVariant 获取您的值(value)。

关于qt - 从 QSortFilterProxyModel 的索引中获取源模型的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50812723/

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