gpt4 book ai didi

c++ - 如何在 Windows 中仅针对平板电脑模式启动 Qt 虚拟键盘

转载 作者:行者123 更新时间:2023-11-30 04:49:33 33 4
gpt4 key购买 nike

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

我关注了this Qt 文档中的示例

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

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

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

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

最佳答案

要检查平板电脑模式,您可以使用 Qt 5.9 中引入的 bool QWindowsWindowFunctions::isTabletMode() 静态函数。要在表格模式下启用虚拟键盘并在桌面模式下禁用虚拟键盘,您可以定期在计时器中检查它并分别显示/隐藏 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();
}

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

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

关于c++ - 如何在 Windows 中仅针对平板电脑模式启动 Qt 虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55354498/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com