问题标签 [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.
qt - 从 QAbstractListModel 中删除行
我有一个从 QAbstractListModel 派生的自定义模型,它暴露给 QML。我需要支持添加新项目和删除现有项目的操作。虽然插入操作没有任何问题,但删除操作会导致应用程序在调用 endRemoveRows() 函数时崩溃。
GPage 类派生自 QObject。在尝试调用 endRemoveRows() 时,试图找出导致应用程序崩溃的原因让我感到震惊。当调用 endRemoveRows() 时,我得到“QList::at:“索引超出范围”中的 ASSERT 失败”。如何从 QAbsracListModel 中删除行?还有其他方法吗?
我在 Windows 7 64 位机器上使用 Qt 5.1.0。
qt4 - 带有 PySide 的 TreeView 中的复选框字段
我正在寻找某种方式将 QTreeView 中的布尔值呈现为复选框而不是下拉列表(似乎是默认值)。我的具体限制是我不希望继承 QTreeView,因为这将涉及替换生成的 .py 文件(来自 .ui 文件)中的小部件。
PySide:v1.2.1 QtCore:v4.8.5 Python:2.7
c++ - 同时在两个 QStandardItemModel 中追加 QStandardItem
首先,我要提前感谢您的回答。我在一个 QStandardItemModel 中插入一个 QStandardItem,然后在树视图 (A) 中显示此模型。在此之后,我将相同的项目(指针)附加到一个新的 QStandardItemModel,它与另一个树视图(B)相关联。在第二种情况下,它只显示一个空项目,而不是一个具有相同文本的项目。如果我复制该项目,结果是预期的。为什么我不能在两个不同的模型中附加相同的项目?
在这种情况下,使用 QSortFilterProxyModel 是没有用的,因为 modelA 和 modelB 具有相同的数据但遵循非常不同的结构。
非常感谢。
如果无法做到这一点,您建议我使用哪种解决方案?我虽然通过使用哈希表来维护表模型之间的对应关系,但我认为有一个更简单的解决方案。
我复制一个代码示例。
c++ - QStandardItemModel:添加一批项目的任何有效方法?
有没有什么有效的方法可以将一批QStandardItem
s 添加到模型中?模型正在被清除,然后我添加了很多项目。QtreeWidget
仅addTopLevelItems ( const QList<QTreeWidgetItem *> & items )
此而已,如何使用模型/视图架构优化此类添加?
c++ - 从 QAbstractListModel 中删除项目后 QML 崩溃
我在装有 OS-X 10.8.5 的 Mac 上运行 Qt 5.1.1 和 QtCreator 2.8.1。我有一个管理 ImageData 对象的 QAbstractListModel。在 main.cpp 中注册 ImageProvider 后,我可以使用 GridView 加载图像并在 QML 中很好地显示它们。
接下来我在视图中选择单个图像,例如,下面显示了几个带有橙色边框的选定图像:
然后 C++ 模型函数:deleteSelected(),产生预期的结果:
但是,当我尝试调整窗口大小时,比如抓住一个角落,我会崩溃。堆栈跟踪显示:异常类型:EXC_CRASH (SIGABRT),我收到 Qt 错误:
因此,也许我不正确地删除了模型项或未能通知模型更改,但我认为开始和结束 RemoveRows 发出了正确的信号来处理同步?毫无疑问,我在这方面遗漏了其他东西。
我还调用了 begin 和 end ResetModel,它可以防止应用程序在调整大小后崩溃,但在这种情况下,附加到模型的任何其他视图都会恢复为显示所有原始项目。
我已经为此寻找解决方案,尝试了很多代码实验,并研究了此处、此处、此处以及其他几个地方发布的代码。
似乎无法使其正常工作,有什么建议吗?谢谢!
下面是一些相关代码:
主.cpp:
数据模型控制器.h:
数据模型控制器.cpp
图像数据.h:
main.qml:
图像数据.cpp:
编辑:在 userr1728854 下面关于范围检查的评论之后,我编辑了 DataModelController::data() 的第一部分,以检查这是否是问题所在。
我的代码现在看起来像(它比修改原始代码更容易在下面引用,而且我不想通过更改我发布的内容来改变我的问题的上下文):
因此,即使这不是向 data() 方法添加范围检查的最可靠方法,该行:
cout << "模型索引 = " << index.row() << endl;
当我调整窗口大小时,至少应该打印:“ index.row() ”,但事实并非如此。因此,调整窗口大小似乎无法访问 data() 方法,并且程序仍然崩溃。
qt4 - 更改 QTreeView 中显示扩展箭头的列
我正在使用 aQAbstractItemModel
来存储一些数据,并使用 aQTreeView
来显示信息。我一直试图将扩展箭头移动到第二列,而不是把它放在第一列,但我并不走运。我尝试使用 aQTableView
来查看是否可以为每一列定义行为,但没有成功。有任何想法吗?
以前我pygtk
用来显示 a TreeView
,并且有一种简单的方法可以定义要在其中调用扩展箭头的列TreeView.set_expander_arrow()
c++ - QTableView clearSelection 因 ASSERT 失败:文件 /usr/include/qt4/QtCore/qlist.h 中的“!isEmpty()”,第 282 行
我有这堂课:
在我的 cunstructor 中:
在我的插槽实现中:
它编译得恰到好处,但是当我运行并进行选择时,它最后会崩溃并显示以下错误消息:
断言:文件 /usr/include/qt4/QtCore/qlist.h 中的“!isEmpty()”,第 282 行
我也尝试了其他技巧:重新实现 showEvent 方法并从该上下文中调用 clearSelection,但没有帮助:(
我的 Qt 版本是 4.8.1。你能帮忙的话,我会很高兴。提前致谢。
c++ - 在 QComboBox 中显示 QAbstractTableModel
晚上好 StackOverflow。这是我的第一个问题,所以我希望它不会太愚蠢。
我有一个模型 sublasingQAbstractTableModel
存储项目继承QObject
。我想显示 a 中的项目列表,该列表会QComboBox
在模型更改时更新。
该模型实现了四个所需的函数rowCount()
、columnCount()
和。data()
headerData()
我的问题是:QAbstractItemModel
在使用QComboBox
时如何使用 a QComboBox::setModel()
?(换句话说,列数是否必须等于 1,例如?)。
以及如何选择QComboBox
使用时为每个项目显示的文本QAbstractModel
?我找到了一种objectName()
方法,QObject
但我不确定它的使用方式。
谢谢 !
qt - QTreeView 总是显示相同的数据
我有一个项目树。它是这样的:
问题是QTreeView
总是使用相同的信息完成。我得到一个看起来像这样的树视图:
我在index()
方法中放了一个“打印”,以查看是否正在创建索引,然后,例如,当我第一次输入“常规”类别时,“Computadoras”和“平板电脑”的索引被创造了,但只是那个时候!然后,显示的数据是错误的!任何想法?
我给你我的树视图实现。Qt教程一等于什么?
python - Qt:QAbstractItemModel 中的 setData 方法
我是模型视图的新手,我在查看文档的同时一直在关注本教程,我偶然发现了这个小细节:可以在此处下载的教程代码在 QAbstractItemModel 类(此处为 QAbstractListModel)中setData 方法的代码是:
根据教程中的解释以及我从文档中了解的内容,如果函数返回 True,则更新视图,如果返回 false,则没有任何反应,但是当我将代码更改为:
我意识到即使函数返回 False,如果 color.isValid() 视图仍然会更新。我误解了 setData 方法中的返回角色还是一个错误?
作为参考,我使用的是 PySide 1.2.1,而不是 PyQt4。