Я пытаюсь выяснить, почему щелчок не работает с примером TreeView
на моем Raspberry Pi3 с сенсорным экраном.
Глядя на qml-код TreeView.qml
, например,
https://github.com/RSATom/Qt/blob/master/qtquickcontrols/src/controls/TreeView.qml:
BasicTableView {
...
__mouseArea: MouseArea {
id: mouseArea
parent: __listView
width: __listView.width
height: __listView.height
z: -1
propagateComposedEvents: true
focus: true
// If there is not a touchscreen, keep the flickable from eating our mouse drags.
// If there is a touchscreen, flicking is possible, but selection can be done only by tapping, not by dragging.
preventStealing: !Settings.hasTouchScreen
...
}
}
Аналогично, глядя на qml-код для BasicTableView.qml
, кажется, что поведение контролируется Settings.hasTouchScreen
.
Согласно:
https://code.woboq.org/qt5/qtquickcontrols/src/controls/Private/qquickcontrolsettings.cpp.html
это соответствует следующему методу:
bool QQuickControlSettings1::hasTouchScreen() const
{
const auto devices = QTouchDevice::devices();
for (const QTouchDevice *dev : devices)
if (dev->type() == QTouchDevice::TouchScreen)
return true;
return false;
}
Однако, в моем случае, Settings.hasTouchScreen
возвращает false; т.е. сенсорный экран (хотя и работает для остальных), не
правильно определяется средой QML, что, вероятно, объясняет, почему не работает щелчок.
Согласно https://doc.qt.io/qt-5/qtouchdevice.html, мое сенсорное устройство должно было быть каким-либо образом зарегистрировано частным QWindowSystemInterface::registerTouchDevice()
методом, но не было.
Как мне заставить это работать?
Спасибо!