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
{
...
}
...