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

2024-09-25 10:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我的问题是:我能用QML/QtQuick做同样的事情吗


Tags: 文件管理系统qml事情qtquickqtreeviewqfilesystemmodelqsortfilterproxymodel
1条回答
网友
1楼 · 发布于 2024-09-25 10:28:44

我不知道更简单,尤其是在这种情况下。我想这取决于你要找的UI特性集。当然,如果你真的想/需要,几乎任何事情都可以做,但是

您提到的最大(也许)障碍是没有真正支持的树视图组件。有旧的控件1TreeView,但这是不赞成的(讽刺的是,它显示了一个文件浏览器树的例子,但这是一个red herring)。它还基于大量的QML/JS代码,速度很慢。据我所知,控件2中没有合适的replacement

还有就是缺少一个简单的QSortFilterProxyModel等价物。我想我们应该用^{}来做这类事情,但这充其量也很尴尬。例如,检查一下this example。现在制作一个QSortFilterProxyModel子类来处理QML其实并不难,现在已经有了一些类似的发布版本(例如this,但我个人并没有尝试过),但是在基本QML组件IMHO中却有一个令人惊讶的不足。还可以在C++中创建/配置一个^ {CD1}},并将其作为上下文属性(或类似的)暴露给QML,但当然也需要从C++方面进行操作(例如,这样做是一个相当冗长的example)。p>

最后QFileSystemModel也没有真正暴露在QtQuick中。实验室版本的FolderListModel有点接近(但请特别注意,它是一个列表模型,而不是树模型)。您也可以从C++中公开^ {< CD5}}(例如上下文属性),但这可能也不是很直接的(如见此answerless question)。

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

相关问题 更多 >