问题标签 [qabstractitemmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1567 浏览

c++ - QTableView QStandardItemModel 恢复或撤消用户输入

如何撤消或还原 QStdarItemModel 填充的 QTableView 上的用户条目?

我已将 dataChanged 信号与我验证数据的处理程序连接...

...但是如果用户输入错误,我想将用户输入恢复或撤消到项目的先前值。

我已经阅读了从 QAbstractItemModel 继承的 revert() 成员,但我不明白它是如何工作的。文档说“让模型知道它应该丢弃缓存的信息。” 但我不确定用户输入的数据是缓存还是已经存储在模型上。

无论如何,如果我尝试...

...在错误的用户输入后它不起作用。

提前致谢!

0 投票
1 回答
390 浏览

qt - QAbstractItemModel 与许多父母一起批量删除

我需要从大型树模型中删除很多行。
问题是模型包含许多父索引。
所以我需要调用 beginRemoveRows 太多次,这太慢了。

是否可以批量删除许多行,每个行都有不同的父级,并避免在每次删除时更新视图。
我想避免 beginResetModel,因为它会重置整个视图。

0 投票
1 回答
3024 浏览

c++ - 为 QStringListModel 项设置自定义数据

我有 QStringListModel

和一个继承自 QObject 的类

当我为 Qt::EditRole 设置数据时,一切正常,但是当我尝试为 Qt::UserRole 设置数据时,它永远不会返回 true,并且当我获取数据时,我看到无效的 QVariant

事实上,无论我尝试为该项目设置哪种类型的数据,这也不起作用:

我试过 Qt::UserRole + 1,得到了同样的结果。也许我应该以某种方式定义模型使用的 ItemDataRoles?

有任何想法吗?谢谢。

0 投票
2 回答
1173 浏览

qt - QAbstractTableModel 数据返回html代码显示

我希望我的 AbstracttableModel 子类data()方法返回 html 即

并且此文本必须以 html 格式显示 int 表: PreText Text PostText

我怎样才能做到这一点?

0 投票
1 回答
695 浏览

qt - 我可以在 QThread 中使用与 QAbstractTableModel 数据的交互吗?

我知道我们不能在非 GUI 线程(QThread)中使用 GUI 交互。但我不知道我们是否可以或不能与QAbstractItemModel线程中的模型()进行交互,如果为真,那么如何以正确的方式进行交互?

老实说,我在谷歌和 SO 上搜索了一些关于这个的东西,似乎我的问题没有相关的答案。

0 投票
1 回答
2247 浏览

pyqt - 如何使用 QAbstractItemModel?

我需要在 PyQt 中使用 QAbstractItemModel 和 QTreeView。

在 dropMimeData 方法中,我想删除源行(如果它是某个 MIME_TYPE。)如何获取源的行和 parentIndex?还是我需要通过其他方法做到这一点。

def dropMimeData(self, mimedata, action, row, column, parentIndex):

0 投票
1 回答
1633 浏览

qt - 在 Qt 中如何对 QModelIndex 的直接子索引进行排序

我正在编写一个 C++ 应用程序,它使用 Qt 类来处理某些数据模型。为此,我继承自QAbstractItemModel

在某些时候,我的应用程序中需要一个排序/过滤选项,所以我还创建了一个继承自的类QSortFilterProxyModel

为了实现排序,我使用了默认QSortFilterProxyModel::sort()方法(我没有在我的代理模型类中重新实现它)并且有一段时间它似乎可以工作。

但在某些时候,我注意到实际QSortFilterProxyModel::sort()方法对整个模型进行排序,而我需要的是仅对某个索引的直接子项进行排序。

我试图重新实现类的sort()方法EventModel,但过了一会儿我意识到这QSortFilterProxyModel::sort()根本不是指它。另一方面,我不确定如何以安全的方式重新排列索引,以便显示模型的视图不会崩溃。

我认为一定有一种方法可以只对某个的直接孩子进行排序QModelIndex,但我还没有找到。

是否有任何教程/示例可以演示我的案例的可能解决方案,或有关如何做到这一点的一些指导方针?

问候

0 投票
0 回答
2341 浏览

qt - 子类化 QStandardItemModel 以避免 QAbstractItemModel

我正在为树状结构实现模型/视图,并且我决定尝试使用QStandardItemModel,我想在其上包装一个特定的类(我在这里称之为“appSpecificClass”)。

基本上,我希望该类的一部分(例如名称或某些数据)显示在模型中,并且当我更改模型(在编辑角色或拖放中)时,我希望这会对 appSpecificClass 产生影响(也就是说,当我更改模型上显示的名称时,与模型的 appSpecificClass 项关联的对象上的名称也会更改)。

因此,我从一个 appSpecificItem 子类化 QStandardItem 开始,它只有一个指向 appSpecificClass 的指针。当我构造 appSpecificItem 时,从 appSpecificClass 调用文本和图标,一切正常。

但是,当从 appSpecificItem 更改数据时,它自然不会更改 appSpecificClass,因为到目前为止我还没有找到任何通过重载虚函数(或其他)与 appSpecificItem 的指针交互的方式

有谁知道该怎么做/如果可能的话?例如,如果信号

发出,我可以更改 appSpecificItem 的指针。

如果没有,是否有任何关于从头开始实现模型的好教程?我已经尝试了一些,但这并不是一件容易的事。理想情况下,我想要一个类似 QStandardItemModel 的模型,但对它进行一些抽象(这样我就可以将我的 appSpecificClass 放在上面)。

0 投票
1 回答
1218 浏览

multithreading - QAbstractItemModel 延迟加载锁定应用程序

我已经实现了 canFetchMore、hasChildren 和 fetchMore,以允许我的模型延迟加载。它非常简单并且基于 QT:http ://doc.qt.io/archives/qt-4.7/itemviews-simpletreemodel.html

我的问题是,在我的应用程序中获取孩子不是一个非常快速的操作,它涉及服务器端的几秒钟延迟,同时它会计算出孩子实际上是谁。

我不确定如何处理。每次有人扩展节点时,我都无法让我的应用程序锁定几秒钟。我不知道如何在后台发生这种情况。如果我要创建一个子进程或线程来实际完成检索子进程和更新客户端数据结构的工作,我将如何告诉模型这已成功完成(以及节点最终扩展) .

另外,有没有办法显示节点当前正在后台加载数据?

抱歉,如果这些是愚蠢的问题,GUI 编程对我来说仍然有点神秘,而且我以前从未使用过 QT。

作为记录,我使用的是 Python,但如果用 C++ 给出答案,我可以理解它们。

谢谢

0 投票
1 回答
720 浏览

qt - 如何操作指向 TableView 模型的指针?

当需要操作 TableView 的模型时,有必要使用 function 获取该模型tableView->model()。但是,这会返回一个指向 a 的指针QAbstractItem,并且它是指向 a 的必要指针QAbstractModel

所以...我使用动态转换进行转换,如下所示:

但是,这个指针返回 NULL,我不知道为什么。

是否需要一些初始化?