【问题标题】:qml virtual keyboard: keyboardDesignWidth and Heightqml 虚拟键盘:keyboardDesignWidth 和 Height
【发布时间】:2017-09-15 09:59:08
【问题描述】:

我正在查看虚拟键盘的 QML 样式。键盘设计宽度和高度的目的是什么?我似乎在管理键盘的宽度和高度时遇到了很多麻烦,并且永远无法将其设置为我想要的方式。直接设置keyboardHeight和Width也没有多大帮助。

问题在于组件背景大小是在幕后以某种方式计算的。因此,即使我拥有我想要的键盘按钮和大小,无关的背景也会覆盖我的一些其他控件,并且很难对键盘的大小进行细粒度控制。

直接控制虚拟键盘的宽度和大小的正确方法是什么?

【问题讨论】:

    标签: qt qml qt-quick qtvirtualkeyboard


    【解决方案1】:

    引用Documentation

    键盘大小是根据可用宽度自动计算出来的;也就是说,键盘保持当前样式指定的纵横比。因此,应用程序应该只设置 InputPanel 的宽度和 y 坐标,而不是高度。

    所以如果你想有一个特定的高度,你需要相应地设置宽度。

    直接控制虚拟键盘的宽度和大小的正确方法是什么?

    例如

    InputPanel {
        anchors.fill: parent
        anchors.leftMargin: 100
        anchors.rightMargin: 100
    }
    

    例如

    InputPanel {
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.bottom: parent.bottom
        width: 30
    }
    

    那么keyboardDesignHeight/Width 是怎么回事?好吧,这似乎是键盘的尺寸,当不需要缩放它时:

    scaleHint : 真实
    键盘样式比例提示。该值由keyboardHeight 除以keyboardDesignHeight 确定。所有像素尺寸必须与此值成比例。
    此属性是只读的!

    因此,设置这些不会禁用根据宽度自动调整输入面板的大小。

    您可能会使用它们来计算一个比率,并据此设置宽度以达到您想要的高度。

    也许这个例子可以帮助你理解这个属性:

    import QtQuick 2.6
    import QtQuick.Window 2.0
    import QtQuick.Controls 2.0
    import QtQuick.VirtualKeyboard 2.0
    
    ApplicationWindow {
        id:appwindow
        visible: true
        width: 800
        height: 600
        title: qsTr("Test")
    
    
        InputPanel {
            id: ip
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.bottom: parent.bottom
            width: 800
    
            Component.onCompleted: console.log(Object.keys(ip.keyboard.style).sort())
        }
    
        Slider {
            id: sl
            from: 0
            to: 3000
        }
    
        Binding {
            target: ip.keyboard.style
            property: 'keyboardDesignHeight'
            value: sl.value
    
        }
    }
    

    【讨论】:

    • 感谢您的回答。很有意义。因此,如果您想要一个方形键盘,您可以将它们设置为相同的值。
    • 所以不清楚如何将宽度计算为scaleHint = keyboardHeight / keyboardDesignHeight - 这里没有宽度。那么如何将所需的高度转换为宽度呢?
    • scaleHint * 键盘设计宽度 = 宽度。 scaleHint * keyboardDesignHeigth = 高度。
    • 然而scaleHint 在我们设置键盘之前没有设置width ;) 如果我知道理想的高度,正确的宽度将是:inputPanel.keyboard.style.keyboardDesignWidth / inputPanel.keyboard.style.keyboardDesignHeight * (desired_height)
    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多