QML可见属性 in Grid delete Item
QML visible property in Grid delete Item
我正在尝试在 Qt4.8 上使用以下代码创建一个 QML 键盘。
Item {
id: keyboard
property string keys: "azertyuiopqsdfghjklmwxcvbn****^<"
Rectangle {
height: parent.height
width: parent.width
Grid {
id: keyboardGrid
rows: 4
columns: 10
spacing: 1
Repeater {
model: keys.length
KeyboardButton {
visible: { (keys.charAt(index) == "*") ? false : true; }
btnKeyText: keys.charAt(index);
}
}
}
}
}
我在键中放了一些“*”,以便让一些不可见的按钮转到网格的下一行,但是当我将 KeyboardButton 设置为 visible = false
时,QML 解释器会忽略它.
查看屏幕截图了解更多详情,第一个是这段代码,第二个是当我评论我将可见设置为 false 的行时。
为什么不可见的组件被忽略了?有什么技巧吗?
As BaCaRoZzo says, element with opacity: 0
or visibility: 0
element is not rendered (in Qt4.8, in 5 and superior opacity : 0
does not affect rendering), 所以我找到了另一种方法来做我想做的事。
我通过使用 Repeater
和 Row
创建自己的网格来实现此目的,如下所示:
Item {
id: keyboard
property variant keys: ["azertyuiop", "qsdfghjklm", "wxcvbn,;:!", "⇧* ↵←"]
Repeater{
id: lineRpt
model: 4
anchors.fill: parent
Row {
spacing: 1
anchors.verticalCenter: parent.top
anchors.verticalCenterOffset: 25+(index*52)
anchors.left: parent.left
property string currentLine: keys[index]
Repeater {
model: keys.length
KeyboardButton {
visible: { (keys.charAt(index) == "*") ? false : true; }
btnKeyText: keys.charAt(index);
}
}
}
}
}
评论后编辑:
你也可以将背景颜色设置为透明,在我的例子中,我也需要删除文本的de“*”。
我正在尝试在 Qt4.8 上使用以下代码创建一个 QML 键盘。
Item {
id: keyboard
property string keys: "azertyuiopqsdfghjklmwxcvbn****^<"
Rectangle {
height: parent.height
width: parent.width
Grid {
id: keyboardGrid
rows: 4
columns: 10
spacing: 1
Repeater {
model: keys.length
KeyboardButton {
visible: { (keys.charAt(index) == "*") ? false : true; }
btnKeyText: keys.charAt(index);
}
}
}
}
}
我在键中放了一些“*”,以便让一些不可见的按钮转到网格的下一行,但是当我将 KeyboardButton 设置为 visible = false
时,QML 解释器会忽略它.
查看屏幕截图了解更多详情,第一个是这段代码,第二个是当我评论我将可见设置为 false 的行时。
为什么不可见的组件被忽略了?有什么技巧吗?
As BaCaRoZzo says, element with opacity: 0
or visibility: 0
element is not rendered (in Qt4.8, in 5 and superior opacity : 0
does not affect rendering), 所以我找到了另一种方法来做我想做的事。
我通过使用 Repeater
和 Row
创建自己的网格来实现此目的,如下所示:
Item {
id: keyboard
property variant keys: ["azertyuiop", "qsdfghjklm", "wxcvbn,;:!", "⇧* ↵←"]
Repeater{
id: lineRpt
model: 4
anchors.fill: parent
Row {
spacing: 1
anchors.verticalCenter: parent.top
anchors.verticalCenterOffset: 25+(index*52)
anchors.left: parent.left
property string currentLine: keys[index]
Repeater {
model: keys.length
KeyboardButton {
visible: { (keys.charAt(index) == "*") ? false : true; }
btnKeyText: keys.charAt(index);
}
}
}
}
}
评论后编辑:
你也可以将背景颜色设置为透明,在我的例子中,我也需要删除文本的de“*”。