我可以用QtQuick替换QFileSystemModel + QSortFilterProxyModel + QTreeView吗?

问题描述 投票:0回答:1

我还没有使用QML / QtQuick,但是我听说它更简单。

我想构建一个本地文件管理系统,需要QFileSystemModel + QSortFilterProxyModel + QTreeView。

我的问题是:我可以使用QML / QtQuick做同样的事情吗?

python qml qtquick2 pyside2
1个回答
0
投票

我不知道更简单,尤其是在这种情况下。我想这取决于您要寻找的UI功能集。当然,如果您确实想要/需要,几乎可以完成任何[[can,但是...

您提到的最大(也许)障碍是,实际上并没有受支持的Tree View组件。有旧的Controls 1 TreeView,但已弃用(具有讽刺意味的是,它显示了文件浏览器树的示例,但这是red herring)。它也基于大量的QML / JS代码,速度很慢。我知道控件2没有合适的replacement

然后缺少简单的QSortFilterProxyModel等效项。我猜我们应该将DelegateModel用于此类操作,但充其量是很尴尬的。例如。签出DelegateModel。现在,要制作一个可以很好地与QML配合使用的this example子类并没有那么困难,并且已经有一些这样的已发布版本(例如QSortFilterProxyModel,但我还没有亲自尝试过),但这是一个令人惊讶的不足基本的QML组件恕我直言。人们还可以在C ++中创建/配置this并将其作为上下文属性(或类似属性)公开给QML,但是当然也需要从C ++方面对其进行操作(例如,这是一个相当冗长的QSortFilterProxyModel这样操作)。

最后example也没有真正暴露给QtQuick。实验室的QFileSystemModel版本有些接近(但要特别注意,它是一个列表模型,而不是树模型)。您也可以从C ++中公开FolderListModel(例如,作为上下文属性),但这也不是那么简单(例如,请参见此QFileSystemModel)。

所以,YMMV。如果需要一个“通用” UI(桌面/移动/等),那么坦率地说,HTML / CSS / JS可能是一个更好的选择(当然,带有Qt C ++后端;-)。我个人发现QML对于编写类似台式机的应用程序感到沮丧,因为可用的QML组件缺少许多功能,并且几乎不可能实现C ++中的子类化,因为大多数“好东西”都是私有API。

© www.soinside.com 2019 - 2024. All rights reserved.