4

我正在为 Windows 台式机和平板电脑制作应用程序。我需要在平板模式下启动 Qt 虚拟键盘。

我在 Qt 文档中遵循了这个示例

我只是在我的 main.cpp 中放了一行代码来让 Qt 虚拟键盘工作

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

但是现在虚拟键盘也以桌面模式启动,这不是必需的。如何仅将 Qt 虚拟键盘限制为平板模式?

我正在使用 Qt 5.9 并尝试了 5.12。Windows 屏幕键盘在需要时不会一直启动

4

1 回答 1

3

要检查平板电脑模式,您可以使用bool QWindowsWindowFunctions::isTabletMode()Qt 5.9 中引入的静态功能。要在表格模式下启用虚拟键盘并在桌面模式下禁用,您可以定期在计时器中检查它并InputPanel分别显示/隐藏:

InputPanel {
    id: inputPanel

    property bool enableKeyboard: false
    ...
    states: State {
        name: "visible"
        when: enableKeyboard && inputPanel.active
        PropertyChanges {
            target: inputPanel
            y: appContainer.height - inputPanel.height
        }
    }
    ...
}

enableKeyboard属性被定义为激活/停用键盘,它应该使用类似的定期更新Timer

Timer {
    onTriggered: enableKeyboard = utils.isTabletMode()
    running: true
    repeat: true
    interval: 1000
}

您应该在基础类中定义isTabletMode函数,例如:QObject

#include <QtPlatformHeaders/QWindowsWindowFunctions>
...
Q_INVOKABLE bool isTabletMode() {
     return QWindowsWindowFunctions::isTabletMode();
}

不要忘记通过以下方式将您的课程公开给 qml:

qmlengine->rootContext()->setContextProperty("utils", pointerToMyClass);
于 2019-03-26T12:04:37.883 回答