问题标签 [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.
qt - 来自 QAbstractListmodel headerData() 的 QML Listview 标头
我将许多 QAbstractListModels 暴露给 QML Listview (Qt4.8.2 QML 1.1)。我现在的问题是,QML ListView 忽略了我的 ListModels 的 headerData() 函数。我一直在寻找解决方案四个多小时。
我在想我必须实现自己的 Q_INVOKABLE 函数来实现这一点。
如果有办法实现 headerData() 函数,请告诉我!
提前致谢。
qt - 是否可以在 QListView 中显示复杂的小部件?
我想创建一个自定义的小部件,它可以显示系统中每个驱动器中的文件。这是布局:
QListView 的每一行都包含一个标题栏(QLabel)和一个 QListWidget,其中包含许多代表文件的图标。
我知道如何使用 QItemDelegate 自定义 QListView 的外观,但我不知道如何创建如此复杂的小部件。
有人可以帮助我吗?非常感谢您阅读这篇文章。
c++ - 覆盖 QML 文件中设置的 ListModel
我有一个 QML C++ 项目,其中 C++ 部分将后端和 QML 用户界面之间的连接联系起来。
我将具有 QAbstractListModel 属性的 QObject 的子类设置为上下文属性。
我的一个组件在 qml 文件中预定义了一个 List 模型。我想用我自己的列表模型替换它。但是如果未设置上下文属性,我想保留该模型。这允许我在没有 c++ 部分的情况下运行程序。将模型设置为上下文属性并没有进行切割,因为本地模型推翻了上下文属性。
我的 QML 看起来像这样
是否可以同时拥有 qml 文件中的模型,用于在 Designer 中显示默认值和用于 Gui 测试,如果我将 myObject 设置为上下文属性,则可以轻松覆盖?
编辑:我使用 QT 4 和 QtQuick 1.1
qt - 在 ListView 中使用 QAbstractListModel
我是 Qt 新手,所以请多多包涵。
我已经成功地从 StringList 和 Object* 的 QList 填充 ListView
我现在正在努力的是使用 C++ 中定义的派生 QAbstractListModel 的类在 QML 中填充 ListView。
这是我的 CPP 类的原型:
MessageEntry 是一个简单的类,它包含 2 个成员、一个 QColor 和一个 QString(该类不扩展 QObject)。
我必须实现所有上述功能,因为它们在底层类中是纯虚拟的(这正常吗?到目前为止,在教程/示例中人们只提到了角色名称和数据)。
roleNames 和 data 的实现如下:
列表视图的 QML 部分是这样的:
到目前为止,这是我对如何在 CPP 和 QML 中实现事物的理解。为了链接这两者,我使用以下代码:
使用上面的代码,运行时 ListView 中不显示任何内容,并且出现以下错误:
我还在注册要导出到 QML 的模型类(不知道这是否有必要):
所以很明显,要么我误解了正确使用 QAbstractListItem 派生类,要么我错过了一个简单的重要关键信息。
我将不胜感激一些指向一些相关示例/教程的指针(其中还向您展示了如何在 QML 中正确访问模型中的数据,因为我注意到在 CPP 中它永远不会通过数据函数)。
另请注意,我使用的是 qt5 ,因此 qt4.8 样本无法解决问题。
编辑
经过长时间的挫折,我终于解决了这该死的东西出了什么问题:
我的 roleNames 函数签名错误!重载的正确签名是:
请注意 protected 和 const 修饰符。
以正确的方式声明函数后,一切正常。
如需进一步通知,实现 data 和 rowCount 就足够了:)。
谢谢您的帮助。我会接受 BaCaRoZzo 的回答,因为我只是在查看示例中的代码后才弄清楚这一点。
附带说明一下,它适用于 message 和 model.message。
qt - 如何使用 QAbstractListModel 子类作为 listmodel 知道在 QML Listview 中单击了哪个项目
我在列表视图中使用 QAbstractListModel 子类。而且我希望能够生成一个新的列表模型,该列表模型根据单击的项目通过 c++ 传递给 QML。
实现什么方法可以判断在列表中单击了哪个项目?
我已经在网上搜索了很多,但我似乎找不到最好的方法。
此代码创建一个显示为顶层的组列表,它有一个嵌套列表,显示在组列表中的每个项目下方。嵌套列表显然显示了该组的子级.. 所以我需要一种方法来获取正在单击的对象,以便我可以在后端使用它来生成其子级的新列表。
代码是:
我希望能够获取实际对象,而不是仅获取被单击项目的名称,因为我需要从对象中提取更多数据以正确识别新子项。
如果你们能帮助我,我将不胜感激!
提前致谢!
c++ - Qt-Qml:将复选框绑定到 QAbstractListModel
我在开发程序时遇到了问题。我有一个QAbstractListModel
包含一个boole
属性的,我希望能够将该值传递给我的 QML 文件,其中包含一个CheckBox
.
我在 StackOverflow 上发现了这个问题,涵盖了同样的问题。我面临着完全相同的问题,但问题和答案涵盖了属性通过 a 发送到 qmlQ_PROPERTY
而我使用 a 的情况QAbstractListmodel
。我已经覆盖了setData()
,data()
和flags()
方法,一切正常,但我有一个按钮可以检查/取消选中我CheckBox
的所有 es,如果用户直接选中其中一个,则无法通过我的选中/取消选中按钮进行编辑。
QAbstractListModel
所以基本上,我想知道如何使用 a而不是 a来设置双向绑定Q_PROPERTY
。
谢谢你。
c++ - 在另一个中使用 QAbstractListModel
我在尝试使用 Qt/QML 为我的应用程序开发数据模型时遇到问题。我已经使用 aQAbstractListModel
能够将海关数据模型从 C++ 传递到 QML,它就像一个简单模型(例如基于字符串和布尔值的模型)的魅力。
但是现在我需要建立一个更困难的模型,我想知道是否可以QAbstractListModel
在另一个内部使用QAbstractListModel
.
让我自己解释一下。我有一个名为model_A
build 的数据模型:
模型_A.h:
然后我需要在另一个名为的模型中使用该模型model_B
:
模型_B.h:
这可能吗,由于 QAbstractListModel 的 DISABLE_COPY 的所有限制问题,还是我应该找到另一种方法来构建我的数据模型?
谢谢你。
qt - QQmlListProperty vs QAbstractListModel
我试图了解如何选择使用 aQAbstractListModel
或 aQObject
与 a QQmlListProperty
。
鉴于QQmlListProperty
处理必须使用 编写的“角色”功能QAbstractListModel
,这似乎是一条不那么乏味的路线。
我不知道大多数人是否建议使用QAbstractListModel
它只是因为它已经存在了更长的时间,还是出于某种原因它是更好的选择。
我也找不到任何关于这两种选择之间权衡的讨论。这个问题是在 Qt Developer Days 讨论中提出的QAbstractListModel
,但答案是“这也可以”。
qml - 为什么使用 QAbstractTableModel 而不是 QAbstractListModel?
我已经TableView
在 QML 中使用TableViewColumn
s 实现了一些这样的角色:
它绑定到 C++ 模型,继承自QAbstractListModel
定义的所有角色,我发现它非常自然。
但是,我发现也存在QAbstractTableModel
,它允许使用列索引。我知道我可能应该使用它,但我更喜欢角色而不是列索引。
有人可以解释一下使用的好处是QAbstractTableModel
什么吗?
qt - 对 QAbstractListModel::postion 的未定义引用
实施时出现此错误QAbstractListModel
。
在我向模型添加插入和删除方法之前,构建项目是成功的。
首先,我添加了 insert 和 remove 方法,但忘记调用 begin* 和 end* 方法,所以在重建项目时出现错误。
之后,我按照文档中的说明添加 begin* 和 end*。但是,当我构建项目时,我收到了上述错误。然后,我删除了插入和删除方法,错误仍然存在。
我曾尝试删除项目的构建目录,清理,运行qmake,然后构建项目,但它没有好。
对象模型.h
对象模型.cpp