如何在Windows中仅为平板电脑模式启动Qt虚拟键盘

How launch Qt Virtual keyboard only for Tablet Mode in Windows

本文关键字:启动 模式 Qt 虚拟 键盘 平板电脑 Windows      更新时间:2023-10-16

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

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

我只是在我的主键盘上放了一行代码.cpp就可以让Qt虚拟键盘工作

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

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

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

要检查平板电脑模式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
}

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

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

不要忘记通过以下方式将您的类暴露给 qml:

qmlengine->rootContext()->setContextProperty("utils", pointerToMyClass);