InputPanel 是 Qt Quick Virtual Keyboard 模块提供的虚拟键盘组件,用于在触摸屏设备上提供软键盘输入功能。
核心属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
active | bool | true | 是否激活键盘 |
externalLanguageSwitchEnabled | bool | false | 是否允许外部语言切换 |
keyboardRectangle | rect | 自动计算 | 只读,键盘的几何区域 |
keyboardOrigin | point | 自动计算 | 只读,键盘原点坐标 |
keyboardRelativePosition | point | Qt.point(0, 0) | 键盘相对位置 |
keyboardStyle | KeyboardStyle | 默认样式 | 键盘样式配置 |
sharedLayoutsPath | string | "" | 共享键盘布局路径 |
extraLayoutsPath | string | "" | 额外键盘布局路径 |
visible | bool | 绑定到Qt.inputMethod.visible | 键盘是否可见 |
常用方法
方法 | 参数 | 返回值 | 说明 |
---|---|---|---|
hide() | - | - | 隐藏虚拟键盘 |
show() | - | - | 显示虚拟键盘 |
toggle() | - | - | 切换键盘显示状态 |
setKeyboardRelativePosition(x, y) | x: real, y: real | - | 设置键盘相对位置 |
常用信号
信号 | 参数 | 说明 |
---|---|---|
visibleChanged() | - | 键盘可见性改变时触发 |
keyboardRectangleChanged() | - | 键盘区域改变时触发 |
activeChanged() | - | 激活状态改变时触发 |
基本使用示例
qml
import QtQuick 2.15
import QtQuick.VirtualKeyboard 2.15
ApplicationWindow {
visible: true
width: 800
height: 600
TextField {
id: textField
anchors.centerIn: parent
width: 200
}
InputPanel {
id: keyboard
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
visible: Qt.inputMethod.visible
}
}
键盘样式定制
通过 keyboardStyle 属性定制
qml
InputPanel {
keyboardStyle: KeyboardStyle {
keyboardBackground: Rectangle {
color: "#f0f0f0"
}
keyPanel: Rectangle {
color: "#ffffff"
radius: 5
border.color: "#cccccc"
border.width: 1
}
fontFamily: "Arial"
fontPixelSize: 22
}
}
高级配置
自定义键盘布局
qml
InputPanel {
extraLayoutsPath: "qrc:/custom_layouts"
Component.onCompleted: {
KeyboardLayoutLoader.setLayoutPath(extraLayoutsPath)
}
}
手动控制键盘显示
qml
Button {
text: "切换键盘"
onClicked: {
if (keyboard.visible) {
keyboard.hide()
} else {
keyboard.show()
}
}
}
输入法集成
qml
InputPanel {
externalLanguageSwitchEnabled: true
Connections {
target: Qt.inputMethod
function onVisibleChanged() {
console.log("输入法可见性:", Qt.inputMethod.visible)
}
}
}
注意事项
-
需要正确导入 QtQuick.VirtualKeyboard 模块
-
在移动设备上通常自动显示,桌面环境可能需要手动配置
-
键盘样式定制可能影响性能
-
不同平台可能有不同的默认键盘布局
-
确保应用程序有足够的空间显示虚拟键盘
平台特定说明
平台 | 注意事项 |
---|---|
iOS | 默认使用系统键盘,需特殊配置才能使用InputPanel |
Android | 需要设置适当的Activity属性 |
Windows | 需要配置QT_IM_MODULE环境变量 |
Linux | 需要安装虚拟键盘插件 |
常见问题解决方案
-
键盘不显示:
-
确保已导入 QtQuick.VirtualKeyboard
-
检查 Qt.inputMethod.visible 绑定
-
验证应用程序有输入焦点
-
-
键盘布局不正确:
-
检查 extraLayoutsPath 设置
-
验证布局文件格式是否正确
-
-
性能问题:
-
简化键盘样式
-
避免在键盘显示/隐藏时进行重操作
-