【发布时间】:2018-12-20 19:49:27
【问题描述】:
我对 QML 和 Qt Quick 比较陌生,我正在寻找有关如何在此处显示 UI 的建议:
这个 UI 是由 QGraphicWidgets 使用 Json 作为模型制作的:
如果您注意到,外部的“Carriage Strength”容器基本上是一个树结构。树视图列表似乎是要走的路,但我不确定是否可以自定义视图以包含进度条和 html 视图 (QWebEngineView)。我还需要能够在运行时更新特定组件,例如进度条。
任何输入都是有帮助的。如果您有任何示例可以指出,那也很好。提前致谢。
根据下面的要求,这里是一个 JSON 示例,用于构建模型:
{
"SequenceHistory": [
{
"Definition": {
"ID": "carriage_strength",
"DisplayName": "Carriage Strength",
"TestArray": [
{
"ID": "sequence_one_setup",
"DisplayName": "Sequence 1 Setup",
"TestArray": [
{
"ID": "psm1_carriage_strength",
"DisplayName": "PSM1 Carriage Strength",
"Progress": 100,
"HtmlToDisplay": "<html><body>This is guide instruction</body></html>",
"Status": "Finish Failed",
},
{
"ID": "psm2_carriage_strength",
"DisplayName": "PSM2 Carriage Strength",
"Progress": 43,
"HtmlToDisplay": "<html><body>This is guide instruction</body></html>",
"Status": "In Progress"
},
{
"ID": "psm3_carriage_strength",
"DisplayName": "PSM3 Carriage Strength",
"Progress": 0,
"HtmlToDisplay": "<html><body>This is guide instruction</body></html>",
"Status": "Not Started"
},
{
"ID": "psm4_carriage_strength",
"DisplayName": "PSM4 Carriage Strength",
"Progress": 0,
"HtmlToDisplay": "<html><body>This is guide instruction</body></html>",
"Status": "Not Started"
}
],
},
],
}
}
]
}
display name表示名称,progress表示进度条百分比,html表示要在WebEngineView中显示的html,status表示状态标签。忽略屏幕截图中的任何时间信息,而不是 JSON 中的任何时间信息。这个 JSON 和屏幕截图的主要区别在于,我在 Carriage Strength 容器内添加了一个容器“Sequence 1 Setup”,以显示容器可以包含容器以及项目。
【问题讨论】:
-
我认为 TreeView 有点太受限制了,因为外部级别看起来与内部级别节点不同。但也许你可以通过为某些项目设置可见的 false (如果是外部级别)来摆脱它。这会很方便,因为 TreeView 具有我在任何其他 QML 小部件中都没有找到的扩展概念。你可以在itemDelegate 中扔任何你想要的东西
标签: qt user-interface qml qtreeview