#qt #qml #stackview
Вопрос:
Я хочу расслабиться до второго последнего пункта в StackView. В документации говорится , что это должно быть так же просто, как stackView.pop({item: itemName})
, но это работает так, как будто я это делаю stackView.pop()
. Каков правильный способ размотки до определенного предмета?
Моя версия Qt-5.14.2.
Ответ №1:
Документация, которую вы связали, предназначена для представления стека QQC1. Для Qt Quick Controls 2 StackView функция pop немного отличается : https://doc.qt.io/qt-5/qml-qtquick-controls2-stackview.html#pop-method
Вы можете назвать это так : stackView.pop(itemName)
. Обратите внимание, что это itemName
должен быть экземпляр элемента, помещенного в стек. Если вы помещаете компоненты в представление стека, попытка всплывающего окна со ссылкой на компонент не сработает.
// this works :
stackView.push(itemInstance);
...
stackView.pop(itemInstance);
// this doesn't work:
stackView.push(component);
...
stackView.pop(component);
// you could store the instance of the item created from the component like so:
createdItem = stackView.push(component);
...
stackView.pop(createdItem);
// or use StackView.find
const itemToPop = stackView.find(item => return item.objectName === "pop me");
stackView.pop(itemToPop)
// or StackView.get to get an item from its position in the stack:
const itemToPop = stackView.get(1);
stackView.pop(itemToPop);
Комментарии:
1. Я совершал глупую ошибку, используя
Component
вместоItem
этого . Спасибо за то, что вы указали, как я, возможно, ошибался, и как решить проблему при использовании компонентов сStackView
.