2017-01-17 37 views
0

我正在用qml使用qtvirtualkeyboard模塊。我使用下面的qml代碼來顯示虛擬鍵盤。在對話框中顯示VirtualKeyboard

import QtQuick 2.5 
import QtQuick.VirtualKeyboard 2.1 

    InputPanel { 
     id: inputPanel 
     y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height 
     anchors.left: parent.left 
     anchors.right: parent.right 
     focus: true 
    } 

當我調用QML與模式配置對話框爲真,我不能觸摸鍵盤。如果對話模態配置爲false,那麼我可以觸摸鍵盤,但是這次隱藏了對話框。另外我希望用戶只能在對話框屏幕上控制鍵盤。

如何在對話框屏幕上控制虛擬鍵盤?

回答

1

如果我正確地理解了這個問題,那麼這可能與QTBUG-56918的問題相同。正如JP在該錯誤報告的評論中提到的,對於Qt Quick Controls 2應用程序,可能的解決方法是在InputPanel上設置parent: root.overlayz: 1,以將其提高到彈出窗口(或對話框)上方。

+0

我試試這個,但它沒有用於對話。所以我把我的對話框轉換成Popup及其工作。謝謝。 –

+0

此替代方法不再適用於5.9.2 :( –

0

使鍵盤成爲對話框的一個孩子,讓您強調如果您希望爲幾個不同的對話框提供可重複使用的解決方案。因此,我的解決方法是使用與它後面的鼠標區域,它可以被實例化,並作爲一個對話對話框非模態(但使用別名屬性而不是項目的):

ModalDialog.qml:

Item { 
    anchors.fill: parent 
    property alias title: dialog.title 
    property alias _x: dialog.x 
    property alias _y: dialog.y 
    property alias _width: dialog.width 
    property alias _height: dialog.height 
    property alias closePolicy: dialog.closePolicy 
    property alias standardButtons: dialog.standardButtons 
    default property alias contentData: dialog.contentData 
    property alias _visible: dialog.visible 
    visible: _visible 
    function open() { dialog.open() } 

    Dialog { 
    id: dialog 
    } 
    MouseArea { 
    anchors.fill: parent 
    z: 100 
    } 
    Rectangle { 
    anchors.fill: parent 
    color: "black" 
    opacity: dialog.opacity/2 
    z: 100 
    } 
}