2017-09-15 85 views
0

我正在查看虛擬鍵盤的QML樣式。 keyboardDesignWidth和Height的用途是什麼?我似乎在管理鍵盤的寬度和高度方面遇到很多麻煩,無法將其設置爲我想要的。直接設置keyboardHeight和Width也沒有多大幫助。qml虛擬鍵盤:keyboardDesignWidth和高度

問題是組件背景大小在某種程度上是在幕後計算的。所以,即使我有我想要的鍵盤按鈕和尺寸,多餘的背景也會覆蓋我的其他一些控件,並且很難對鍵盤的尺寸進行精細控制。

直接控制虛擬鍵盤寬度和大小的正確方法是什麼?

回答

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 

    } 
} 
+0

感謝您的回答。具有很大的意義。所以,如果你想要一個方形鍵盤,你可以將它們設置爲相同的值。 – Luca