Применить недействительный QML DropShadow, подсказку об ошибке и подсказку для «QML DropShadow: невозможно привязать элемент, который не является родителем или родным братом». - PullRequest
0 голосов
/ 28 января 2019

Коды отображаются следующим образом:

import QtQuick 2.12
import QtGraphicalEffects 1.12
import QtQuick.Controls 2.12

Item {
    width: 300
    height: 300

    TabBar {
        id: bar
        width: parent.width
        contentHeight: 38

        background: Rectangle {
            color: "#477aa0"
        }

        TabButton {
            id: tabBtn1
            width: 129
            height: 36
            text: qsTr("Plate Layout")
            anchors.top: parent.top
            background: Rectangle {
                color: "#ffffff"
            }
        }

        //is tabBtn1's sibling!
        DropShadow {
            anchors.fill: tabBtn1
            horizontalOffset: 3
            verticalOffset: 4
            radius: 5
            samples: 11
            color: "#000"
            opacity: 0.75
            source: tabBtn1
        }
    }
}

Если TabBar изменить на Прямоугольник и TabButton изменить на Кнопка , это работает. Насколько я знаю , qml включен в скобки Меню .Я думаю, это ошибка в Qt lib, может быть, я ошибаюсь.

1 Ответ

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

Это потому, что DropShadow - это не TabButton, что заставляет эту функцию возвращать false, и это не с в действительном contentItem, как TabButton есть.Обратите внимание, что contentItem - это ListView, поэтому сделать DropShadow его дочерним элементом и попытаться заполнить его TabButton, вероятно, все равно не будет работать.

Более простым решением является использование слоев :

    TabButton {
        id: tabBtn1
        width: 129
        height: 36
        text: qsTr("Plate Layout")
        anchors.top: parent.top
        background: Rectangle {
            color: "#ffffff"
        }

        layer.enabled: true
        layer.effect: DropShadow {
            anchors.fill: tabBtn1
            horizontalOffset: 3
            verticalOffset: 4
            radius: 5
            samples: 11
            color: "#000"
            opacity: 0.75
        }
    }
...