[英]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的行时。
为什么看不见的组件只会令人厌恶? 有什么花招吗?
正如BaCaRoZzo所说,具有opacity: 0
或visibility: 0
的元素不会被渲染(在Qt4.8中,在5和更高的opacity : 0
中不会影响渲染),所以我找到了另一种方法来完成我想要的事情。
我通过使用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);
}
}
}
}
}
评论后编辑:
您还可以将背景色设置为透明,在我的情况下,我也需要删除文本的“ *”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.