Как развернуть StackView до второго последнего элемента в QML

#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 .