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提及它,下一章还具有一个例子:

在应用程序集成的方法,所述应用要求在下面的章节说明来创建输入面板的一个实例。

+0

我已经尝试了与虚拟键盘相同的设备上的qt示例,他们似乎工作,很清楚,键盘构建正确。 –

+1

我忘了一件很重要的事情..:D – Mitch

+0

是的,就是这样。我完全错过了需要提供InputPanel。 –