Qt qml gridview:在末尾添加特殊项
我想让QMLQt qml gridview:在末尾添加特殊项,qt,qml,qt5,Qt,Qml,Qt5,我想让QMLGridView在它的末尾有一个特殊的元素来添加新项目。因此,当网格回流时,末端的特殊元素与正常元素完全相同。我用一个流对它进行编码,在一个中继器内,在它之后,是一个特殊的元素,它工作得很好,但是我不能用流来获取滚动条,所以我移动到了GridView 我尝试了GridView的footer属性,但页脚显示在网格下,而我希望它位于网格的最后一行以及其他项目上 我想说清楚的是: [item1] [item2] [item3] [item4] [ ADD ] 此外,特殊元素必须具有不同的
GridView
在它的末尾有一个特殊的元素来添加新项目。因此,当网格回流时,末端的特殊元素与正常元素完全相同。我用一个流
对它进行编码,在一个中继器内,在它之后,是一个特殊的元素,它工作得很好,但是我不能用流来获取滚动条,所以我移动到了GridView
我尝试了GridView的footer
属性,但页脚显示在网格下,而我希望它位于网格的最后一行以及其他项目上
我想说清楚的是:
[item1] [item2] [item3]
[item4] [ ADD ]
此外,特殊元素必须具有不同的显示方式,并在单击时显示不同的操作
<>我希望C++方面不要意识到这种特殊行为。如果我必须在模型的末尾添加一个项目,我希望它在QML中添加它,这样我就不会玷污C++的实现细节。
我试过这个:
model: projects.push({name: '+'})
还有各种类型的
append
,但都不起作用。我按照BaCaRoZzo的建议,设法让滚动条基于流运行
然而,这是一个有点复杂的方案,我在标准输出上得到了QML警告
我是这样做的:
ScrollView {
anchors.fill: parent
Flickable {
contentWidth: parent.width
contentHeight: flow.implicitHeight
Flow {
id: flow
anchors.fill: parent
...
}
}
}
如果我简单地将流
放在滚动视图
中,那么流中只有一列
据我所知,这是可行的,但是我在标准输出上得到了以下警告:
QML Flickable: Binding loop detected for property "contentWidth"
我希望有一个更简单的解决方案,但这就是我现在拥有的
编辑:好的,我去掉了警告。我只是在Flickable
中设置了width:parent.width
而不是contentWidth
,它很好,运行良好,没有警告。我想我会坚持下去,除非有人提出更好的解决方案。很高兴看到你解决了这个问题。
在测试代码之后,我认为您可以以更简单的方式获得相同的结果
如果将流
绑定到包含滚动视图
的项
,则流
可以水平增长,并根据需要获得垂直滚动条。工作守则:
import QtQuick 2.3
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
// import QtQuick.Controls 1.3 // <--- requires Qt >= 5.4
Window {
id: container
width: 300
height: 150
visible: true
ScrollView {
anchors.fill: parent
//horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff // <--- requires .Controls 1.3
Flow {
width: container.width // width of ScrollView parent
spacing: 10
Text { text: "Text"; font.pixelSize: 40 }
Text { text: "items"; font.pixelSize: 40 }
Text { text: "flowing"; font.pixelSize: 40 }
Text { text: "inside"; font.pixelSize: 40 }
Text { text: "a"; font.pixelSize: 40 }
Text { text: "Flow"; font.pixelSize: 40 }
Text { text: "item"; font.pixelSize: 40 }
Text { text: "yeah"; font.pixelSize: 40 }
Text { text: "alright"; font.pixelSize: 40 }
Text { text: "cool"; font.pixelSize: 40 }
Text { text: "almost"; font.pixelSize: 40 }
Text { text: "not"; font.pixelSize: 40 }
Text { text: "epic"; font.pixelSize: 40 }
}
}
}
“但我无法获得带有流的滚动条”-->利用ScrollView
或Flickable
作为流的容器应该提供滚动条。这不是一个可行的选择吗?我认为ScrollView
只适用于Flickable
,据我所知,它只是GridView
和ListView
?我现在开始更深入地研究它。以前失败。当我在addScrollView
中添加Flow
时得到的第一个效果是Flow
仅垂直流动。我记得以前我在做了一些调整后,设法让它水平流动。但是不要像没有滚动视图时那样在二维中流动。是的,你不应该在没有固定大小的容器中使用锚。fill:parent
,而应该尝试适合其内容。
import QtQuick 2.3
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
Window {
id: container
width: 300
height: 150
visible: true
Flickable {
id: flick
anchors.fill: parent
contentHeight: flow.height // grows according to the size of the Flow
Flow {
id: flow
width: container.width
spacing: 10
Text { text: "Text"; font.pixelSize: 40 }
Text { text: "items"; font.pixelSize: 40 }
Text { text: "flowing"; font.pixelSize: 40 }
Text { text: "inside"; font.pixelSize: 40 }
Text { text: "a"; font.pixelSize: 40 }
Text { text: "Flow"; font.pixelSize: 40 }
Text { text: "item"; font.pixelSize: 40 }
Text { text: "yeah"; font.pixelSize: 40 }
Text { text: "alright"; font.pixelSize: 40 }
Text { text: "cool"; font.pixelSize: 40 }
Text { text: "almost"; font.pixelSize: 40 }
Text { text: "not"; font.pixelSize: 40 }
Text { text: "epic"; font.pixelSize: 40 }
}
}
ScrollBar { // one of the scrollbars from the linked question
flickable: flick
}
}