qml 虚拟键盘:keyboardDesignWidth 和 Height

Luc*_*uca 3 qt qml qt-quick qtvirtualkeyboard

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

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

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

der*_*erM 8

文档中引用

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

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

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

例如

InputPanel {
    anchors.fill: parent
    anchors.leftMargin: 100
    anchors.rightMargin: 100
}
Run Code Online (Sandbox Code Playgroud)

例如

InputPanel {
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.bottom: parent.bottom
    width: 30
}
Run Code Online (Sandbox Code Playgroud)

那么这有什么关系keyboardDesignHeight/Width呢?好吧,这似乎是键盘的尺寸,当不需要缩放时:

scaleHint : real
键盘风格的比例提示。这个值是通过将确定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

    }
}
Run Code Online (Sandbox Code Playgroud)