Очистить элементы пути QML ShapePath

Я хочу удалить все элементы пути из моего ShapePath. Поскольку pathElements — это список Qml, единственный способ изменить его — установить для него новый массив Javascript. Поэтому я ожидал, что смогу очистить его, просто назначив ему пустой массив.

Пробовал path.pathElements = [], у меня не работает.

Затем я попробовал path.pathElements = null, который действительно работает (PathLine больше не рисуется), но печатает это уродливое сообщение об ошибке: QObject::connect: Cannot connect (nullptr)::changed() to QQuickShapePath::processPath()

Любые другие идеи?

Код для воспроизведения:

Shape {
    anchors.fill: parent

    ShapePath {
        id: path

        strokeWidth: 2
        strokeColor: "green"
        fillColor: "green"

        Component.onCompleted: path.pathElements = []

        PathLine { x: 50; y: 50 }
    }
}

person skaldesh    schedule 28.12.2020    source источник
comment
Поскольку вы пытаетесь удалить элемент динамически, мне интересно, нужно ли динамически создавать PathLine?   -  person JarMan    schedule 28.12.2020
comment
В моем реальном приложении я фактически создаю их динамически. Но и тогда не работает   -  person skaldesh    schedule 29.12.2020
comment
Проблема может заключаться в том, что список также нельзя инициализировать пустым массивом (см. эту тему )   -  person skaldesh    schedule 29.12.2020
comment
Я подал отчет об ошибке qt: bugreports.qt.io/browse/QTBUG-91366   -  person skaldesh    schedule 24.02.2021


Ответы (1)


Я подал отчет об ошибке в Qt, и они подтвердили мою ошибку.

Обходной путь, пока это не будет исправлено, состоит в том, чтобы сначала назначить null, а затем [].

Shape {
    anchors.fill: parent

    ShapePath {
        id: path

        strokeWidth: 2
        strokeColor: "green"
        fillColor: "green"

        Component.onCompleted: {
            path.pathElements = null
            path.pathElements = []
        }

        PathLine { x: 50; y: 50 }
    }
}
person skaldesh    schedule 25.02.2021