问题标签 [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 回答
8298 浏览

qt - QTreeView & QAbstractItemModel & insertRow

我正在尝试为 QTreeView 实现 QAbstractItemModel。我在插入行时遇到问题。我注意到,如果我在应用程序的开头插入一切正常。但是如果我稍后插入行 - 在一些其他操作(如选择等)之后,新项目保持不可见。此外,QTreeView 似乎根本不起作用!我是否必须发出一些信号来通知 QTreeView 关于行插入?

这是我的插入方法:

LayersModelItem 是具有 QList 及其子项和数据的类。

我的项目的完整代码(需要 KDE 库)在这里: https ://github.com/coder89/PhotoFramesEditor/tree/v0.0.8 要查看问题,请在主窗口中选择一个蓝色项目,然后右键单击它并选择“删除项目”。(这个方法在 Canvas::removeItems() 中)并且它被完整地评论了 - 我很绝望,我试图找到这个问题的原因......(实际上它没有删除任何东西 - 它添加了新项目)。

感谢您的任何帮助和建议!

0 投票
3 回答
6200 浏览

c++ - QAbstractItemModel data() is NEVER called

I'm attempting to create a QTreeView and use a custom model for it. I have placed qDebug() statements at various places, and I have determined that data() is never being called. How can I fix this problem?

The model's code is below

The code from the MainWindow where the view is located is below.

I should mention that the header does display for this model. However, even when I set an item, nothing is displayed in the widget save the header.

Oh and NeuralNetwork is a sub of NeuralNode.

0 投票
0 回答
535 浏览

qt4 - 如何在 QAbstractItemModel 和我的 std::map<> 数据之间创建连接?

我有一些数据,例如

这是一个std::map< CompanyPtr, PersonPtr >。我想把它安装mapQAbstractItemModel,然后将它连接到QTreeView

我使用了示例Simple Tree Model,但它很复杂(这里我说的是TreeItem类和setupModelData方法)。

这是我的模型类:

在我的课堂上,我无法正确实现这两种方法:

也许有人已经解决了这个问题?

谢谢!

0 投票
1 回答
4041 浏览

qt - Qt错误“持久模型索引损坏”为什么?

我的 Qt/面试应用程序有问题。我使用 QTreeView 来显示树数据。我基于 QAbstractItemModel 实现了我自己的模型。

在应用程序崩溃之前出现以下错误。添加新记录后经常发生这种情况。

您能否向我解释一下这个错误的含义。什么是 QPersistentModelIndex ?我没有在我的代码中使用 QPersistentModelIndex。

谢谢。

0 投票
1 回答
4099 浏览

qt - QTreeView / QAbstractItemModel - 添加项目并使用 beginInsertRows

我正在基于 QAbstractItemModel 实现我的模型,并将它与 QTreeView 一起使用来显示分层数据。数据存储在 sqlite 表中。

我的问题是添加子节点时应该如何调用 beginInsertRows。假设我有一些父节点,它包含 10 个子节点。我想添加新的子节点(最后)。

我这样做是这样的:

currentNodesCount 包含值 10,这是该子节点中的行数。新节点将放置在第 11 个位置(从 0 开始计数的第 10 个)。

这个逻辑正确吗?

感谢帮助。


我也想知道使用 beginRemoveRows。

它是否正确:

currentRow 包含从 0 开始计数的已移除节点列表中的位置。

0 投票
2 回答
2175 浏览

qt - QAbstractItemModel 测试使用 modeltest

我正在寻找一个关于如何使用 modeltest 来测试基于 QAbstractItemModel 的模型的好教程。我不知道如何解释显示的调试消息。

此外,我在配置 modeltest 项目以在 QtCreator 中使用我的应用程序时遇到问题。包括.pri/ .pro 不起作用。我收到一条错误消息,提示“没有法师目标的规则......”。在 modeltest/modeltest.pro 文件中修复路径后,它开始编译。但我得到了这个奇怪的断言

断言:文件 c:\ndk_buildrepos\qt-desktop\src\testlib\qtestlog.cpp 中的“QTest::testLogger”,第 232 行

任何想法为什么会发生这种情况?


我的 modeltest 文件夹位于我的项目中。我在 *.pro 文件的末尾添加了以下行

modeltest.pri 文件包含以下内容

我修改了我的代码以这种方式使用模型测试

TasksModel 是我对 QAbstractItemModel 模型的实现。ui->treeView 是显示数据的小部件。

将 modeltest 与我的应用程序集成时没有进行其他修改。

Qt版本是4.7。

0 投票
1 回答
1100 浏览

c++ - QAbstractItemModel + ModelTest::rowsInserted ASSERTion 问题

我正在尝试使用 ModelTest 调试我的模型(QAbstractItemModel)。我无法理解一个断言。

ModelTest 中有两个插槽可以拦截我的模型生成的信号。

  1. ModelTest::rowsAboutToBeInserted
  2. ModelTest::rowsInserted

插槽/功能 1 看起来像这样

插槽 2 看起来像这样

我不明白 dla last 断言 (*)。让我们假设在我的应用程序中我添加了 1 行。此行是存储在我的模型中的唯一行。所以行号为0。

在我的模型中添加我调用的行之前

那么为什么modeltest需要

模型->数据(模型->索引(开始,0,父))

等于

模型->数据(模型->索引(end + 1, 0, c.parent))

我在这里想念什么?请帮忙 :)

0 投票
3 回答
9185 浏览

python - 以编程方式获取和设置 QTreeview 中的活动行 (PyQt)

有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?所谓活动,是指具有焦点突出显示的行,而不是选定的行。在绘画事件中,我可以QStyle.State_HasFocus用来获取活动行,但这似乎不适用于其他地方。

0 投票
2 回答
2810 浏览

qt - QAbstractItemModel + QTreeView 什么会导致项目变得不可选择?

我正在尝试基于 QAbstractItemModel 创建自己的模型。它似乎工作正常。它通过了模型测试断言。

当我删除一行时,我遇到了这个奇怪的问题。删除操作正常。但随后其他行变得不可选择(不是全部)。你有没有遇到过这样的行为?

在哪些情况下 QTreeView 可以决定该行不能被选中?

有任何想法吗 ?如果需要,我可以提供整个模型实现。


编辑:作为替代方案,我正在寻找一个 100% 工作的 QAbstractItemModel + QtSql + QTreeView 实现的例子。模型应该提供添加和删除方法,并且必须通过模型测试。这也将回答我的问题:-)


编辑:下面是我的源代码。压缩一点使其更小

ps 我现在看到 parent() 实现中有一个错误。删除 nodeParams[*].row 中的行值后包含不正确的位置。您如何在不将整个树加载到内存的情况下解决此问题?

0 投票
1 回答
1053 浏览

qt - Qt:使用 QtSql 实现 QAbstractItemModel 的示例(与 QTreeView 一起使用)

我正在寻找与 QTreeView 一起使用的 QAbstractItemModel 的示例实现。该模型应该从 QSqlQuery 加载数据,并且应该以“懒惰”的方式进行。换句话说,我只想加载打开的节点/父节点的记录。我想看看如何在这个模型中正确添加和删除记录。

我尝试自己实现这样的模型,但遇到了很多不同的错误,尤其是当我开始添加和删除行时。

如果你知道我在哪里可以找到这样的例子,我将不胜感激。

谢谢 :)