我在QML中开发的应用程序中存在体系结构问题。请考虑下图:
有关该应用程序的一些事实:
我想避免不必要的代码复制,因此,只想使用1个具有不同图形表示形式的列表。我在执行此操作时遇到问题。
希望能帮助您解决此问题。
答案 0 :(得分:3)
我不太了解OP想要归档的内容,但是我想您需要该模型。 这是一个可重用模型的简单示例:
import QtQuick 2.11
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
Window {
visible: true
width: 600
height: 400
title: qsTr("Model example")
ListModel {
id: myModel;
ListElement { name: "Apple" }
ListElement { name: "Orange" }
ListElement { name: "Banana" }
}
Repeater {
model: myModel
delegate: type1
}
Repeater {
model: myModel
delegate: type2
}
ListView {
model: myModel
delegate: Text { text: name; height: 30; }
width: 100
height: 200
}
ComboBox {
width: 100
y: 200
model: myModel
}
Component {
id: type1
Canvas {
x: 100 + Math.round(Math.random() * 400)
y: Math.round(Math.random() * 100)
rotation: Math.round(Math.random() * 360)
antialiasing: true
width: 100
height: 100
onPaint: {
var ctx = getContext("2d");
ctx.fillStyle = "#00DD00";
ctx.beginPath();
ctx.moveTo(50, 0);
ctx.lineTo(100, 100);
ctx.lineTo(0, 100);
ctx.fill();
}
Text {
anchors.centerIn: parent
text: name
}
}
}
Component {
id: type2
Rectangle {
x: 100 + Math.round(Math.random() * 400)
y: 200 + Math.round(Math.random() * 100)
rotation: Math.round(Math.random() * 360)
antialiasing: true
width: 100
height: 100
color: "orange"
Text {
anchors.centerIn: parent
text: name
}
}
}
}
答案 1 :(得分:0)
欢迎,只有在我有足够的声誉时才能发表评论,但是您不能仅使用QAbstractListModel吗?然后,您可以使用两个路径视图来确定对象的位置。这是example,但是您将拥有自己的QAbstractListModel而不是示例ListModel。代表将确定项目的形状。
在QML的ListModel上使用QAbstractListModel的原因是因为ListModel是在运行时创建的。