0

我正在尝试在树莓派上使用 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 with the virtual keyboard module not found 错误。

现在,我有一个简单的组件,它有一个文本字段:

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
        }

当我点击它时,键盘不显示。我想知道是否需要进行其他设置才能召唤键盘?

4

1 回答 1

4

disable-desktop应该qmake在构建 Qt 虚拟键盘之前作为参数传递给,而不是使用键盘的应用程序:

qmake CONFIG+=disable-desktop qtvirtualkeyboard.pro

但是,我认为这段代码会自动处理嵌入式设备(这意味着预构建/打包的 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
    }
}

这里有一个更高级的例子。部分文档有提到,下一章也有例子:

在应用程序集成方法中,应用程序需要创建一个 InputPanel 的实例,如下一章所述。

于 2017-07-07T20:19:05.437 回答