Для проверки режима планшета вы можете использовать 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);