操作系统:ubuntu17.10
Qt版本:Qt5.10
Qt5.7以后的开源版本中支持自带的虚拟键盘了,下面记录一下在自己的Qt Quick中加入该模块:
1. 在main()函数中添加 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QApplication a(argc, argv);
// //qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QQmlApplicationEngine engine1;
engine1.load(QUrl(QStringLiteral("qrc:/qml/MainWindow.qml")));
return a.exec();
}
需要说明的是,这一句代码不能放到QApplication a(argc, argv);之后,不然编译的时候会报错。
2. 在顶层的Qml文件中导入 :
import QtQuick.VirtualKeyboard 2.3
3. 在根源素中加入:
InputPanel {
id: inputPanel
z: 99
x: 0
y: window.height
width: window.width
states: State {
name: "visible"
when: inputPanel.active
PropertyChanges {
target: inputPanel
y: window.height - inputPanel.height
}
}
transitions: Transition {
from: ""
to: "visible"
reversible: true
ParallelAnimation {
NumberAnimation {
properties: "y"
duration: 250
easing.type: Easing.InOutQuad
}
}
}
}
完成以上步骤后,运行程序,当点击textEdit等编辑控件的时候,就会按照步骤3定义的动作弹出虚拟键盘