繁体   English   中英

网格中的QML可见属性删除项目

[英]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: 0visibility: 0的元素不会被渲染(在Qt4.8中,在5和更高的opacity : 0中不会影响渲染),所以我找到了另一种方法来完成我想要的事情。

我通过使用RepeaterRow创建自己的网格来实现此目的,如下所示:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM