QtQuick / QML:将项目重新设置为 GridLayout 的最后一个单元格不起作用
QtQuick / QML: Reparenting an item to the last cell of a GridLayout does not work
在我的应用程序中,我想手动将元素放置在 GridLayout 中,并通过拖放在单元格之间移动它们,就像棋盘一样。为此,我手动将要放置的元素的父元素设置为单元格索引。我在另一个 post 中找到了这种方法,我非常喜欢它。
为了解释我的问题,我整理了一个最小的工作示例。
import QtQuick
import QtQuick.Window
import QtQuick.Layouts 1.12
Window {
width: 640
height: 100
visible: true
GridLayout{
columns: 10
id: grid
anchors.fill: parent
Repeater{
model: 10 * 2
Rectangle{
color: "lightblue"
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
Text{
property int cellidx: 1
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
Text{
property int cellidx: 18
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
Text{
property int cellidx: 19
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
}
原则上,这已经很好用了。除了 GridLayout 的最后一个单元格。正如您在屏幕截图中看到的那样,将 Text
元素放置到最后一个单元格不起作用
Screenshot
当尝试使用 parent: grid.children[cellidx]
和 cellidx
= 最后一个单元格的索引将元素放置到最后一个单元格时,它总是放置在布局的第一个单元格中或附近。
我也尝试了 Grid
布局,但在那里观察到相同的效果。也许有人对这个初学者问题有想法。不幸的是,Google 也帮不了我。非常感谢。
grid.children
可能包含 objects 除了您添加的矩形。也可能有内部创建的 children。当我测试你的代码时,我可以通过父级 grid.children[20]
而不是 grid.children[19]
.
将文本添加到最后一个矩形
在我的应用程序中,我想手动将元素放置在 GridLayout 中,并通过拖放在单元格之间移动它们,就像棋盘一样。为此,我手动将要放置的元素的父元素设置为单元格索引。我在另一个 post 中找到了这种方法,我非常喜欢它。 为了解释我的问题,我整理了一个最小的工作示例。
import QtQuick
import QtQuick.Window
import QtQuick.Layouts 1.12
Window {
width: 640
height: 100
visible: true
GridLayout{
columns: 10
id: grid
anchors.fill: parent
Repeater{
model: 10 * 2
Rectangle{
color: "lightblue"
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
Text{
property int cellidx: 1
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
Text{
property int cellidx: 18
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
Text{
property int cellidx: 19
parent: grid.children[cellidx]
font.pointSize: 18
font.bold: true
text: cellidx
}
}
原则上,这已经很好用了。除了 GridLayout 的最后一个单元格。正如您在屏幕截图中看到的那样,将 Text
元素放置到最后一个单元格不起作用
Screenshot
当尝试使用 parent: grid.children[cellidx]
和 cellidx
= 最后一个单元格的索引将元素放置到最后一个单元格时,它总是放置在布局的第一个单元格中或附近。
我也尝试了 Grid
布局,但在那里观察到相同的效果。也许有人对这个初学者问题有想法。不幸的是,Google 也帮不了我。非常感谢。
grid.children
可能包含 objects 除了您添加的矩形。也可能有内部创建的 children。当我测试你的代码时,我可以通过父级 grid.children[20]
而不是 grid.children[19]
.