QML QQuickText: невозможно привязать элемент, который не является родителем или братом

Когда я использую TumblerColumn в моем Tumbler, Я получил QML QQuickText: Cannot anchor to an item that isn't a parent or siblingКогда я использую Tumbler в одиночку ошибка не появляется. Я не могу понять, в чем проблема TumblerColumn,

Вот мой Dialog код

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Extras 1.2

Dialog {
    id: customTimerInputDialog
    title: "Custom timer"
    height: 150
    width: 300
    standardButtons: StandardButton.Ok | StandardButton.Cancel
    onAccepted: {

    }

    onRejected: {
        console.log("Rejected")
    }

    Column {
        anchors.fill: parent
        Text {
            text: "Timer"
            height: 40
        }

        Tumbler {
            id: tumbler
            TumblerColumn {
                model: 10
            }

            TumblerColumn {
                model: 60
            }
        }
    }
}

TumblerColumn (TumblerStyle.qml) полный исходный код

...
// line 294
property Component delegate: Item {
    implicitHeight: (control.height - padding.top - padding.bottom) / tumblerStyle.visibleItemCount

    Text {
        id: label
        text: styleData.value
        color: "#666666"
        opacity: 0.4 + Math.max(0, 1 - Math.abs(styleData.displacement)) * 0.6
        font.pixelSize: Math.round(TextSingleton.font.pixelSize * 1.25)
        anchors.centerIn: parent
    }
}
...

Сообщение об ошибке

ОБНОВИТЬ

Я получаю ту же ошибку с Popup QML Type

Popup {
    id: popup
    x: 100
    y: 100
    width: 200
    height: 300
    modal: true
    focus: true
    closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent

    Tumbler {
        id: intervalPicker
        TumblerColumn {
            model: 10
        }

        TumblerColumn {
            model: 60
        }
    }
}

1 ответ

Вы смешиваете Qt Quick Controls 1 и 2. В вашем диалоге / всплывающем окне вы импортируете QtQuick.Controls 2.2 а также QtQuick.Extras 1.2, Оба импорта определяют Tumbler, но один из Qt Quick Extras предназначен для работы с Qt Quick Controls 1 (см. импорт в TumblerStyle.qml).

Если вы хотите использовать TumblerColumn и TumblerStyle, вы должны использовать Tumbler из Qt Quick Extras 1.2.

Если вы хотите использовать тумблер из Qt Quick Controls 2, вы не можете использовать какой-либо тумблер из Qt Quick Extras 1.2.

Если вам нужно импортировать как Qt Quick Extras 1.2, так и Qt Quick Controls 2 в файл qml, вам нужно использовать as классификатор:

import QtQuick.Extras 1.2 as Extra
import QtQuick.Controls 2.2 as Controls2

...
Extra.Tumbler 
{
...
}

Controls2.Tumbler 
{
...
}
...
Другие вопросы по тегам