我正在使用带qml的qtvirtualkeyboard模块。我使用以下qml代码来显示虚拟键盘。
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
}
当我在模态配置为true的对话框中调用qml时,我无法触摸键盘。如果对话框模态配置为false,那么我可以触摸键盘,但这次隐藏对话框。此外,我希望用户只能在对话框屏幕上控制键盘。
如何在对话框屏幕上控制虚拟键盘?
答案 0 :(得分:1)
如果我正确理解了问题,那么这可能与QTBUG-56918的问题相同。正如JP在该错误报告的评论中所提到的,可能的解决方法(对于Qt Quick Controls 2应用程序)是在parent: root.overlay
上设置z: 1
和InputPanel
以将其提升到弹出窗口之上(或对话)。
答案 1 :(得分:0)
如果您想为几个不同的对话框提供可重用的解决方案,那么让键盘成为对话框的子项会给您带来压力。因此,我的解决方法是使用一个带有MouseArea的非模态对话框,可以将其实例化并用作对话框(但使用别名属性而不是Item的):
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
}
}
答案 2 :(得分:0)
为InputPanel设置以下属性:
z: 1
parent: Overlay.overlay
focus: true
并为Popup设置以下属性:
modal: false
focus: true