如何在带有页面的 QML 中显示模型?

Posted

技术标签:

【中文标题】如何在带有页面的 QML 中显示模型?【英文标题】:How to display model in QML with pages? 【发布时间】:2021-01-11 20:35:37 【问题描述】:

我在显示带有页面的模型时遇到问题,我找不到正确的方法。

我有ListView,它有 15 个矩形的模型,如下图所示。

有一个属性currentPage 在单击按钮时会更改。我希望能够显示:

第一页 0-4 个元素第二页 5-9 个第三页最后 5 个。 em>

我知道我可以创建它们,例如 FirstPage.qmlSecondPage.qml... 并直接使用它们,但我想显示模型中的项目。 ListView 并不重要,它可以是任何组件,但我想使用模型。

实现这一目标的最佳方法是什么?欢迎任何想法建议。

【问题讨论】:

也许positionViewAtIndex 会有所帮助? @JarMan 非常感谢您,这是一种解决方案。我将interactive: false 添加到我的列表中,并按照您的建议进行操作。如果有前任,唯一剩下的就是找到解决方案。在列表视图中腾出空间的 11 或 12 个元素结束,因此第 10 个元素出现在列表的顶部,但我会为此找到方法并发布更新。请将您的建议添加为答案,以便我将其标记为已解决。 看起来无法从文档中删除 :):If positioning the view at index would cause empty space to be displayed at the beginning or end of the view, the view will be positioned at the boundary. 但是如果你在最后一页中降低listView的高度并在其他情况下将其设置回原始高度,则可以使用。 【参考方案1】:

ListView 有一个名为positionViewAtIndex() 的方法,它允许您指定滚动到哪个项目。因此,对于您的情况,您可以执行以下操作:

Button 
    id: previousBtn
    onClicked: 
        listView.positionViewAtIndex(listView.currentIndex - 5);
    

Button 
    id: nextBtn
    onClicked: 
        listView.positionViewAtIndex(listView.currentIndex + 5);
    

【讨论】:

以上是关于如何在带有页面的 QML 中显示模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QML 中进行基于状态的模型更改

如何将表模型数据传递给 qml?

如何在 python 中创建路径并将其显示在 qml 画布上

QML:带有图标的 QtQuick.Controls 选项卡

如何在运行时生成的 QML 中加载图像(jpg)

如何正确地将 ComboBox 的模型从 python (pyQt5) 传递给 QML?