В QML добавьте pressAndHold к элементу, который уже обрабатывает нажатие? - PullRequest
0 голосов
/ 18 января 2019

Я хотел бы добавить обработчик pressAndHold к вкладкам, созданным TabView. Если я присоединяю такой обработчик к компоненту, из которого TabView генерирует вкладку, то вкладка больше не работает, потому что печать не попадает на нижележащую вкладку. Установка пропагатаComposedEvents не помогает, потому что нажатие не является составным событием. Я попытался развернуть свою собственную систему pressAndHold, используя таймер и обрабатывая нажатие и отпускание, но это все еще препятствует попаданию нажатого сигнала на нижнюю вкладку. Я попытался очистить mouse.accepted в моем обработчике прессы, но затем я не получил сигнал освобождения, потому что MouseArea предполагает, что я не могу быть заинтересован в этом, если я не принял прессу. Так что я в тупике.

Общий вопрос: как вы отслеживаете все сигналы мыши с помощью MouseArea и, возможно, добавляете поведение, не мешая им проникнуть во все, что находится под ним? Более ограниченный вопрос: как добавить pressAndHold к тому, что уже обрабатывает нажатия и / или щелчки, но не обрабатывает pressAndHold - когда у вас нет доступа к базовому обработчику мыши?

1 Ответ

0 голосов
/ 18 января 2019

Надеюсь, что я правильно понимаю вашу проблему. Вы можете попробовать поместить 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" }
            }
        }
    }
}
...