由于初始发布不足而编辑。
您好,
感谢您的帮助!
你是对的,我想包括整个文件更好,尽管大小:
import QtQuick 2.5
import QtQuick.LocalStorage 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Controls 2.1
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.0
import QtQuick.Controls.Material 2.1
import "./database.js" as Database
ApplicationWindow {
visible: true
width: 640
height: 480
id: appWindow
x: Screen.width / 2 - width / 2
y: Screen.height / 2 - height / 2
title: qsTr("Project Stats")
Material.theme: Material.Dark
ListModel {
id: projectModel
ListElement {
projectID: "123654"
manager: "Schneider"
sponsor: "3466"
}
}
Component {
id: projectDelegate
SwipeDelegate {
id: projectSwipeDelegate
width: parent.width
height: projectDelegateItem.implicitHeight
anchors.horizontalCenter: parent.horizontalCenter
spacing: 10
contentItem: Item {
id: projectDelegateItem
Text {
id: projectID_text
text: "Project ID: " + projectID
font.pointSize: 20
anchors.horizontalCenter: parent.horizontalCenter
font.weight: Font.Black
color: "white"
}
Text {
id: manager_text
text: 'Manager: ' + manager + " Sponsor: " + sponsor
anchors.top: projectID_text.bottom
anchors.horizontalCenter: parent.horizontalCenter
font.weight: Font.Thin
color: "lightgrey"
}
}
onClicked: {
console.log(index, projectModel.get(index).projectID)
if (swipe.complete)
projectModel.remove(index)
else {
//var component= Qt.createComponent("timepointsstackview.qml")
//var loadwin = component.createObject(appWindow)
//loadwin.selected_project = projectModel.get(index).projectID
// stackView.push(Qt.resolvedUrl("timepointsstackview.qml"), {properties: {selected_project: projectModel.get(index).projectID}})
stackView.push(component, {properties: {selected_project: projectModel.get(index).projectID}})
}
}
swipe.right: Label {
id: deleteLabel
text: qsTr("Delete")
color: "white"
verticalAlignment: Label.AlignVCenter
padding: 12
height: parent.height
anchors.right: parent.right
SwipeDelegate.onClicked: projectListView.model.remove(index)
background: Rectangle {
color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
}
}
}
}
Item {
Component.onCompleted: {
Database.getDatabase()
Database.getProjects()
}
}
StackView {
id: stackView
anchors.fill: parent
// Implements back key navigation
focus: true
Keys.onReleased: if (event.key === Qt.Key_Back && stackView.depth > 1) {
stackView.pop();
event.accepted = true;
}
initialItem: Item {
width: parent.width
height: parent.height
ListView {
id: projectListView
anchors.fill: parent
clip: true
model: projectModel
delegate: projectDelegate
}
}
}
onClosing: {
if (Qt.platform.os == "android") {
close.accepted = false;
// if (stack.depth > 1) stack.pop();
}
}
}
与此同时,我已经删除了行/列的内容,我把它放进去以某种方式工作,尽管我没有它。
我还在初步发布之前尝试了隐含高度,但遗憾的是无济于事。以上是我目前的代码,虽然输入
height: projectDelegateItem.implicitHeight
在那个地方(可能不是正确的一个或错误的引用?不得不从你的建议中改变它,因为我已经取出了行)导致只在一个地方渲染。
感谢您到目前为止的时间,如果您仍然有耐心告诉我在哪里转动螺丝......
答案 0 :(得分:0)
好的,首先: 严肃对待警告。如果qml告诉你,你不应该尝试在行或列中使用锚点,不要这样做!
QML Row: Cannot specify left, right, horizontalCenter, fill or centerIn anchors for items inside Row. Row will not function.
QML Column: Cannot specify top, bottom, verticalCenter, fill or centerIn anchors for items inside Column. Column will not function.
如果你看不到那些警告,也不要这样做。它会陷入困境。 一行自动将所有子项并排固定在一起。一栏也是如此,只是水平。如果你搞砸了,一切都会破裂。
坦率地说:我甚至不明白你为什么要使用这个奇怪的Row / Column-Setup。 对于你的情况,似乎更好地采取锚定。如果你有理由,为什么不采取网格?其次:您需要为委托指定高度。不幸的是,它似乎并不计算隐含高度。
SwipeDelegate
根据implcitHeight
的{{1}}计算自己的implicitHeight
。
问题是,您没有将行(具有正确的contentItem
)分配为 implicitHeight
,而是将其添加为子项。< / p>
将其指定为contentItem
会为您解决此问题。
关于您的修改和删除行: 您现在使用的contentItem
不会根据其子项计算Item
。所以你需要自己提供计算。
这将为您的代表设置适当的高度,您的代表不会重叠。
implicitHeight