如何在Windows中仅为平板电脑模式启动Qt虚拟键盘
How launch Qt Virtual keyboard only for Tablet Mode in Windows
我正在为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);
相关文章:
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何创建一个空的全局类并在启动时实例化它
- 为什么在保护模式下继承升级不起作用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 此模式的C++RegEx
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 无法在硬件模式下创建 SGX 安全区 - "invalid launch token"即使文档将无效的启动令牌指定为第一个
- 未处于调试模式时正常启动测试
- 如何在Windows中仅为平板电脑模式启动Qt虚拟键盘
- 如何将信号发送到在 KDevelop 中以调试模式启动的程序
- Visual Studio/C++:基于启动调试模式生成的非依赖项目的生成
- 如何创建一个可以在GUI对话模式下或通过命令行启动的C MFC程序
- 从无模式对话框启动CFileDialog时会冻结
- 如何在最大化模式下启动C ++程序的BGI窗口
- 以"simple c++"模式编译的程序在从QtCreator启动时不起作用
- C++ 使用 WINAPI 启动多个无模式对话框(无 MFC)
- 以仅本机模式在c#启动项目上启动调试