问题标签 [qabstractlistmodel]

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 回答
5635 浏览

qt - QAbstractListModel insertRows 无法正常工作

我有一个 QAbstractListModel 的子类,并将这个模型子类附加到 GridView。当我从子类中删除行时,GridView 会更新,但是当我在模型中插入行时,GridView 不会更新。我已经实现了 removeR

我有一个非常简单的 QAbstractListModel 子类,并附上了一个 QML GridView。我在 GUI 上有两个按钮添加/删除。按下 Add 将字符串添加到模型和 gui 更新,按下 remove 从模型和 gui 更新中删除最后一个字符串。我的问题是当我添加只插入一行时,当我删除时,GUI 上没有任何反应。给出的是我的模型子类和 QML 文件的实现。

名称模型.cpp

main.qml

我正在调用 beginInsertRows / endInsertRows 和 beginRemoveRows / endRemoveRows 但它似乎不起作用。正如在其他类似线程上所建议的那样,我在开始 / 结束 InserRows 之后也调用了 layoutChanged / dataChanged 但没有效果。

实际上,我的实际项目几乎有同样的问题。我创建了这个应用程序来测试这个 beginInsertRows 等有什么问题。

任何帮助表示赞赏。

问候法鲁克·阿尔沙德。

0 投票
1 回答
1112 浏览

qt - 创建 QGraphicsView 对象的 QListView

我希望能够创建一个垂直的项目列表,该列表的外观与您在 PowerPoint 中看到的内容相似,它显示了代表每张幻灯片的垂直磁贴列表。

我相信使用 aQListView和 aQAbstractListModel是解决这个问题的正确方法。我的子QAbstractListModel类包含一个QList. QGraphicsViews因此,每个图块(或幻灯片)都是一个QGraphicsView. 我花了很多时间试图在互联网上找到一个类似的例子,我也一直在使用 Qt 的例子,但运气不佳。

这是我的模型课...

我可以在 中收到“ADDING”消息addgvw,但在 中无法收到“HERE”消息data

这就是我使用模型类的方式......

在我的小部件类的构造函数中,我调用

...然后在创建新图块的函数中,创建图块后,我调用...

最后,我的小部件是空的:(

编辑:我想补充一下,因为我认为我可能会被问到,出于多种原因,我对转换为 QPixMap 并显示图块的图像不感兴趣。

0 投票
1 回答
4340 浏览

qt - 使用 qabstractlistmodel 的自定义模型的 QListview 问题

尝试为我的 qlistview 实现自定义模型。我一直在阅读与我类似的过去帖子的链接,但我无法让它工作。

我想列出我应该由用户通过单击添加按钮动态创建的对象。要删除列表视图上的项目,用户应选择该项目,然后单击删除按钮。

编辑-我正在尝试使用继承自QAbstractListModel的自定义模型创建一个 qlistview 。qlistview 将显示 Qlist,所有项目都应在 qlistview 中列出。我还希望用户创建一个新的 MyCustomObject 并将其添加到 Qlist。

我尝试按照可以通过谷歌搜索找到的示例和帖子进行操作,但此时我迷路了。

单击添加按钮时应用程序崩溃。

主窗口.cpp

主窗口.h

customlistmodel.cpp

自定义列表模型.h

MyCustomObject.h

我的自定义对象.cpp

主文件

主窗口.ui 在此处输入图像描述

0 投票
1 回答
228 浏览

qt - 从 QListView 中选择值并在提交时将其传递给下一个窗口?

QListView用来显示来自 MySQL 数据库的简单名称列表,现在我需要在单击Next >按钮时将选定的值发送到下一个窗口,我是 Qt 的新手,看到了QAbstractListModel类,但我没有得到哪个使用方法和方法,请指导我,提前谢谢你。

在此处输入图像描述

0 投票
1 回答
1280 浏览

c++ - QListView 显示空白行?(Qt)

我刚刚开始尝试使用 Qt 的 AbstractListModel,作为一个实践应用程序,我正在尝试制作一个存储自定义对象的模型。这些类是testpersonpersonlistmodel类和mainwindow. 我遇到的问题是我的视图没有显示正确的数据,如果我添加两个“测试人员”,那么我的 listView 会显示两个空行。那么有人可以指导我查看模型的数据格式实际上是如何工作的吗???我现在做错了什么?

人物类.cpp

个人列表模型.h

个人列表模型.cpp

下面是 mainWindow.cpp 中的一些测试代码

0 投票
1 回答
5566 浏览

qt - 带有 QAbstractListModel 的 QListView 显示一个空列表

我创建了一个非常简单的QListView带有自定义的示例QAbstractListModel。显示QListView,但它是空的。

我究竟做错了什么?

代码:

谢谢!

对前面代码的修复是将模型的父级设置为QListView

但这提出了一个问题,如果模型必须引用视图,那么模型/视图的独立性在哪里?

如果我想在两个不同的视图中使用这个模型怎么办?

0 投票
3 回答
6261 浏览

qt - 按 QML ListView 中的角色对 QAbstractListModel 派生模型进行排序

我创建了一个基于底层 QHash 的 QAbstractListModel 派生模型。由于我需要在 QML 中使用模型,因此我无法使用 Qt 小部件和视图集成的排序功能。

我尝试使用 QSortFilterProxyModel 但它似乎不适用于我的模型。让模型在 QML 中正常工作还不够乏味,现在我被困在排序上。

任何建议表示赞赏。

以下是模型来源:

这是“尝试”对其进行排序:

唉,代理作为模型工作,但它不对条目进行排序。

0 投票
2 回答
3557 浏览

python - 从 QAbstractListModel 中插入和删除项目

我正在尝试创建一个 QAbstractListView 以与 QComboBox 一起使用,该 QComboBox 维护它包含的项目的排序列表。我在下面包含了一些示例代码来说明我的问题。当我更新列表中的项目时,组合框的 currentIndex 不会更新以反映对模型的更改。我试过使用 rowsAboutToBeInserted 和 rowsInserted 信号,但我看不到任何效果(也许我做错了?)。

我的实际用例稍微复杂一些,但例子应该足够了。被排序的项目不仅仅是字符串,并且需要更多的努力来排序并具有与其 DisplayRole 不同的 ItemDataRole。

itemsAdded 和 itemsRemoved 是我自己的函数,它们将连接到我试图代理的另一个列表中的信号。

要触发问题,请按“插入“c”按钮。字符串被正确插入到列表中,但是选择从“e”移动到“d”(即选择索引没有改变)。

示例代码

0 投票
0 回答
738 浏览

pyqt - PyQt QWidget in QAbstractListModel gets deleted with QSortFilterProxyModel

I need to populate a listview with widgets, then have a custom proxyfilter work with it. Without the filter it works great, when active it seems to delete the widgets attach to the model.

It shows up fine showing all items, filtering works but when erasing the filter, when hidden widgets should be shown again following error gets thrown:

custom_widget.setGeometry(option.rect) RuntimeError: underlying C/C++ object has been deleted

Tried not using QVariant and going the internalPointer route but breaks at the same spot.

Thanks for having a look!

Setup:

Custom widget

Delegate for painting the view

List view model:

Finally the filter proxy model:

0 投票
1 回答
13588 浏览

qt - 从 QAbstractListModel 中删除行

我有一个从 QAbstractListModel 派生的自定义模型,它暴露给 QML。我需要支持添加新项目和删除现有项目的操作。虽然插入操作没有任何问题,但删除操作会导致应用程序在调用 endRemoveRows() 函数时崩溃。

GPage 类派生自 QObject。在尝试调用 endRemoveRows() 时,试图找出导致应用程序崩溃的原因让我感到震惊。当调用 endRemoveRows() 时,我得到“QList::at:“索引超出范围”中的 ASSERT 失败”。如何从 QAbsracListModel 中删除行?还有其他方法吗?

我在 Windows 7 64 位机器上使用 Qt 5.1.0。