提示:本文中的 Demo 已 push 到 github,可忽略本文直接到 我的github 中查看代码。
Qt 提供了 QuickControl TreeView
。但是比较奇葩的是该控件不能直接使用,而需要用户自己扩展实现。
官方给出了一个示例如下:
|
TreeView { TableViewColumn { title: "Name" role: "fileName" width: 300 } TableViewColumn { title: "Permissions" role: "filePermissions" width: 100 } model: fileSystemModel } |
它声明了一个 TreeView控件,该控件有 2 列,分别为 Name 和 Permissions,还有一个名为 fileSystemModel 的 model
。对用户来说,这里的 model 是一个关键性的对象,它需要用户使用 C++ 实现 ,并注册到 qml 中供 TreeView 使用。按官方的说法, model 是一个 为 tree view 提供数据的属性,它包含了 tree view 将要展示的数据。
用户的 model 必须继承于 QAbstractItemModel
类。
该类是一个抽象类,在运行中,treeview 从该类中获取用户数据,再在UI上展示。该类有如下纯虚函数,必须在子类中实现:
|
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0; virtual QModelIndex parent(const QModelIndex &index) const = 0; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; |
继续阅读
Qt 安装后,需要添加或删除组件,会比较麻烦。步骤如下:
- Qt 安装目录里找到
MaintenanceTool.exe
,运行并登录
添加或删除组件
-> Next
, 会出现 要继续此操作,至少需要一个有效且已启用的储存库
。它表示Qt 无法从本地文件更新,需要联网更新。
存储库
可以在 存储库镜像列表 找到全世界的镜像节点 ,其中有3个位于中国,分别是北京理工、清华与北京科技大学安节点。选择其中一个,点击 HTTP
标签 ,在打开的文件列表中找到相应存储库的位置,如 https://mirrors.tuna.tsinghua.edu.cn/qt/online/qt5/windows/x86/online_repository/
- 打开 MaintenanceTool 的
设置
选项卡,将上面的镜像地址添加到用户定义储存库,即可进行QT的在线维护更新