TableView - Как получить зависшую строку без потери styleData.selected - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно выделить наведенный ряд в TableView. По умолчанию эффект зависания отсутствует. Я могу использовать MouseArea внутри rowDelegate для достижения этой цели. Но это отключит механизм выбора в TableView.

Значит styleData.selected больше не будет работать. Это означает, что я должен запрограммировать каждую строку кода для механизма выбора, включая расширенный выбор.

Как решить эту проблему? Мне просто нужно небольшое свойство, такое как styleData.hovered, как в handle компонент ScrollViewStyle

Вопрос уже задавался 3 года и 2 месяца назад. К сожалению, без ответа.

QML, как использовать наведение мыши вместе с styleData.selected

UPDATE

    rowDelegate: Rectangle {
            height: 30

            property color selectedColor: styleData.hasActiveFocus ? "gray" : "lightgray"
            color: styleData.selected ? selectedColor : mouse_area.hovered?"black":backgroundColor

            MouseArea{
                id:mouse_area
                property bool hovered:false
                propagateComposedEvents : false

                hoverEnabled: true
                anchors.fill: parent

                onEntered: {
                    hovered=true
                }

                onExited: {
                    hovered=false;
                }
            }
        }

1 Ответ

1 голос
/ 20 июня 2019

Добавление:

MouseArea {
    // ...
    onPressed: mouse.accepted = false
}

распространит сигнал мыши на TableView и сохранит поведение при выборе.

...