Component { id: contactDelegate Rectangle { width: 1240 height:340 color: '#1865CD' Rectangle { width: 1240 height: 288 color: "#E5EEF7" radius: 30 Rectangle{ width: 168 height: 37 radius: 10 color: '#1865CD' anchors.horizontalCenter: parent.horizontalCenter Image { source: "/img/Tasklist/ic_tasklist.png" width: 24 height: 24 anchors.left: parent.left anchors.leftMargin:42 anchors.top: parent.top anchors.topMargin: 8 } Text{ property int listindex text: '任务: ' + listindex.toString() color: 'white' font.pointSize: 12 font.family: '微软雅黑' anchors.left: parent.left anchors.leftMargin:71 anchors.top: parent.top anchors.topMargin: 4 Component.onCompleted: { listindex=index+1 } } }}
时间: 2024-02-10 13:22:02 浏览: 159
这是一个使用QML Component定义联系人列表项的示例代码。其中,我们使用了一个Rectangle组件作为该列表项的外部容器,内部包含了一个蓝色的矩形和一个白色的矩形。
在白色矩形中,我们使用了一个Rectangle组件作为该列表项的标题栏,内部包含了一个图片和一个文本,用于显示任务信息。其中,图片和文本的位置都使用了anchors属性进行布局。在文本中,我们使用了Component.onCompleted事件,用于在列表项创建完成后设置该列表项的序号。
相关问题
Rectangle{ width: parent.width height: 120/2 anchors.bottom: parent.bottom color: "#114670" Row{ width: childrenRect.width spacing: 5 CusLabel{ id:dateTimeLabel text: "筛选时间" font.pixelSize: 16 anchors.verticalCenter: dateInput.verticalCenter } CusInputDate{ id:dateInput height: 20 normalTextColor: CusConfig.themeColor selectTextColor: CusConfig.pageBkgColor beginDate: __minDate endDate: new Date() endTime: Qt.formatDateTime(new Date(),"hh:mm:ss") Component.onCompleted: { __minDate= new Date("2020/01/01") __maxDate= new Date() } } } } 这段代码中将时间筛选两个日期分为两行
可以将 `Row` 换成 `Column`,这样就可以将两个控件分开放在不同的行了,代码修改如下:
```
Rectangle{
width: parent.width
height: 120/2
anchors.bottom: parent.bottom
color: "#114670"
Column{
width: childrenRect.width
spacing: 5
CusLabel{
id:dateTimeLabel
text: "筛选时间"
font.pixelSize: 16
anchors.horizontalCenter: parent.horizontalCenter
}
CusInputDate{
id:dateInput
height: 20
normalTextColor: CusConfig.themeColor
selectTextColor: CusConfig.pageBkgColor
beginDate: __minDate
endDate: new Date()
endTime: Qt.formatDateTime(new Date(),"hh:mm:ss")
Component.onCompleted: {
__minDate= new Date("2020/01/01")
__maxDate= new Date()
}
}
}
}
```
Canvas { id: canvas // ... transform: Scale { id: canvasScale xScale: 1 yScale: 1 } Rectangle { id: rect x: 100 y: 100 width: 50 height: 50 color: "red" property bool selected: false MouseArea { anchors.fill: parent onClicked: { rect.selected = true; } } onSelectedChanged: { if (selected) { var selectionBox = canvas.createSelectionBox(rect); selectionBox.transform = canvasScale; } else { canvas.removeSelectionBox(rect); } } } Rectangle { id: selectionBox color: "transparent" border.color: "blue" border.width: 2 visible: false transform: Scale { xScale: 1 yScale: 1 } } function createSelectionBox(item) { if (item.parent === canvas) { selectionBox.x = item.x - 5; selectionBox.y = item.y - 5; selectionBox.width = item.width + 10; selectionBox.height = item.height + 10; selectionBox.visible = true; canvas.setChildIndex(selectionBox, canvas.children.length - 1); return selectionBox; } } function removeSelectionBox(item) { if (selectionBox.parent === canvas) { selectionBox.visible = false; } }}里的setChildIndex出现了报错,报错信息为TypeError: Property 'setChildIndex' of object QQuickCanvasItem_QML_0(0xfb07c0) is not a function,希望你可以给出解决方法
根据报错信息,我们可以看出问题出在 `setChildIndex` 不是 `QQuickCanvasItem` 对象的函数。实际上,`setChildIndex` 是 `QQuickItem` 对象的函数,因此我们需要将 `Canvas` 继承自 `QQuickItem`,并在 `createSelectionBox` 函数中使用 `canvas.children.indexOf(selectionBox)` 来获取 `selectionBox` 的索引位置,然后再使用 `canvas.children.move()` 来改变 `selectionBox` 的层级关系,代码示例如下:
```qml
import QtQuick 2.0
Item {
id: canvas
property alias contentWidth: contentItem.width
property alias contentHeight: contentItem.height
function createSelectionBox(item) {
var selectionBox = selectionBoxComponent.createObject(canvas);
if (item.parent === canvas) {
selectionBox.x = item.x - 5;
selectionBox.y = item.y - 5;
selectionBox.width = item.width + 10;
selectionBox.height = item.height + 10;
selectionBox.visible = true;
selectionBox.z = canvas.children.indexOf(item) + 1;
return selectionBox;
}
}
function removeSelectionBox(item) {
var selectionBox = item.selectionBox;
if (selectionBox && selectionBox.parent === canvas) {
selectionBox.visible = false;
selectionBox.z = -1;
}
}
Rectangle {
id: contentItem
anchors.fill: parent
}
Component {
id: selectionBoxComponent
Rectangle {
color: "transparent"
border.color: "blue"
border.width: 2
visible: false
z: -1
}
}
MouseArea {
anchors.fill: parent
onClicked: {
for (var i = 0; i < canvas.children.length; i++) {
var item = canvas.children[i];
if (item instanceof QQuickItem) {
if (item.selected) {
item.selected = false;
}
}
}
}
}
}
```
在上述代码中,我们使用 `Component` 来创建 `selectionBox`,并将其层级关系设置为 `-1`,以便在 `createSelectionBox` 函数中使用 `canvas.children.indexOf(item) + 1` 来将其层级关系提升到选中的 `item` 之上。
在 `removeSelectionBox` 函数中,我们将 `selectionBox` 的层级关系设置为 `-1`,以便在 `createSelectionBox` 函数中重新设置其层级关系。
最后,在 `Canvas` 中添加一个 `MouseArea`,当用户点击 `Canvas` 时,将取消所有已选中的 `item`。
希望这个解决方法对你有所帮助!
阅读全文