qt虚拟键盘不显示
问题描述:
我正在尝试在树莓派上使用qt虚拟键盘,并且有问题召唤键盘。qt虚拟键盘不显示
我得按如下方式允许使用虚拟键盘的配置项目:
//In the PRO file
QT += qml quick quickcontrols2 xml
static {
QT += svg
QTPLUGIN += qtvirtualkeyboardplugin
}
CONFIG += c++11 disable-desktop
我觉得disable-desktop
应该足以召唤虚拟键盘,至少这是我的假设。
第一行中我main
文件是:
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
这将确保模块被加载。我已经验证没有这一行,虚拟键盘模块的程序barfs没有找到错误。
现在,我有一个简单的组件,其中有一个文本字段:
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.1
import QtQuick.VirtualKeyboard 2.1
TextField {
id: idField
width: 80
height: 30
placeholderText: qsTr("ID")
Layout.maximumHeight: 30
Layout.minimumHeight: 30
Layout.minimumWidth: 80
Layout.maximumWidth: 80
focus: true
anchors.horizontalCenter: parent.horizontalCenter
inputMethodHints: Qt.ImhDigitsOnly
}
当我点击它,键盘不出来。我想知道为了召唤键盘是否需要额外的设置?
答
disable-desktop
应该作为一个参数构建Qt虚拟键盘,不使用键盘的应用程序之前被传递到qmake
:
qmake CONFIG+=disable-desktop qtvirtualkeyboard.pro
不过,我认为this code会自动处理,对于嵌入式设备(这意味着预先构建/打包的Qt应该可以工作)。
当使用disable-desktop
,它给你提供了InputPanel
:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.VirtualKeyboard 2.0
ApplicationWindow {
id: window
visible: true
width: 640
height: 480
TextField {
anchors.centerIn: parent
}
InputPanel {
id: inputPanel
z: 89
y: active ? parent.height - height : parent.height
anchors.left: parent.left
anchors.right: parent.right
}
}
有此here的更高级的例子。的文档的一部分This提及它,下一章还具有一个例子:
在应用程序集成的方法,所述应用要求在下面的章节说明来创建输入面板的一个实例。
我已经尝试了与虚拟键盘相同的设备上的qt示例,他们似乎工作,很清楚,键盘构建正确。 –
我忘了一件很重要的事情..:D – Mitch
是的,就是这样。我完全错过了需要提供InputPanel。 –