В QML добавьте pressAndHold к элементу, который уже обрабатывает нажатие?
Я хотел бы добавить обработчик pressAndHold к вкладкам, созданным TabView. Если я присоединяю такой обработчик к компоненту, из которого TabView генерирует вкладку, то вкладка больше не работает, потому что печать не попадает на нижележащую вкладку. Установка пропагата ComposedEvents не помогает, потому что нажатие не является составным событием. Я попытался развернуть свою собственную систему pressAndHold, используя таймер и обрабатывая нажатие и отпускание, но это все еще препятствует попаданию нажатого сигнала на нижнюю вкладку. Я попытался очистить mouse.accepted в моем обработчике прессы, но затем я не получил сигнал освобождения, потому что MouseArea предполагает, что я не могу быть заинтересован в этом, если я не принял прессу. Так что я в тупике.
Общий вопрос: как вы отслеживаете все сигналы мыши с помощью MouseArea и, возможно, добавляете поведение, не мешая им проникнуть во все, что находится под ним? Более ограниченный вопрос: как добавить pressAndHold к тому, что уже обрабатывает нажатия и / или щелчки, но не обрабатывает pressAndHold - когда у вас нет доступа к соответствующему обработчику мыши?
1 ответ
Надеюсь, что я правильно понимаю вашу проблему. Вы можете попробовать поместить TabView в MouseArea. Во всяком случае, это не лучшее решение.
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MouseArea {
anchors.fill: parent
onPressAndHold: console.log("press")
TabView {
Tab {
title: "Red"
Rectangle { color: "red" }
}
Tab {
title: "Blue"
Rectangle { color: "blue" }
}
Tab {
title: "Green"
Rectangle { color: "green" }
}
}
}
}