Qt 5.14.2中如何正确将StackView退回到倒数第二个指定项
Qt 5.14.2中StackView退回到指定项的正确方式
我之前在Qt 5.14.2里也踩过StackView pop({item: itemName})的坑!确实如你所说,这个版本里这个写法根本不生效,和直接调用pop()效果一样,这应该是Qt这个版本的一个小bug。
要解决这个问题,你可以改用StackView的popTo()方法,这个方法在5.14.2里是稳定可用的,专门用来退回到指定的项或者指定索引的位置。
退回到倒数第二个项的具体实现
如果你的需求就是退回到倒数第二个项,有两种简单的写法:
- 通过索引直接跳转
// 先判断StackView里至少有2个项,避免索引越界 if (stackView.count >= 2) { stackView.popTo(stackView.count - 2); }
- 获取目标项实例后跳转
if (stackView.count >= 2) { var targetItem = stackView.get(stackView.count - 2); stackView.popTo(targetItem); }
如果要退回到特定命名的项
如果你不是固定退到倒数第二个,而是要退到某个特定名称的项,可以先遍历StackView的items找到目标项,再调用popTo():
var targetItem; for (var i = 0; i < stackView.count; i++) { var currentItem = stackView.get(i); // 假设你的目标项设置了objectName为"targetPage" if (currentItem.objectName === "targetPage") { targetItem = currentItem; break; } } if (targetItem) { stackView.popTo(targetItem); }
这个方法在Qt 5.14.2里是完全可靠的,我当时就是用这个方法解决了和你一样的问题。
内容的提问来源于stack exchange,提问作者Mohammad Ali
相关产品推荐
相关产品推荐

