我正在尝试创建一个 SwipeView ,其中第一个页面具有 interactive 属性false,而其他页面则启用了它。我试图实现的效果是让主页具有指向其他页面的链接,但其他页面只能返回到主页(如iOS设置菜单)。
interactive
问题是,在第一个更改页之后, currentIndex 属性丢失绑定,导致 SwipeView 中断。
currentIndex
下面是应用程序输出:
qrc:/main.qml:10:5: QML SwipeView: Binding loop detected for property "currentIndex" file:///home/rcc/Qt/5.12.6/gcc_64/qml/QtQuick/Controls.2/SwipeView.qml:49:18: QML ListView: Binding loop detected for property "currentIndex"
下面是默认的滑动视图应用程序(QtCreator -> New -> Qt快速应用程序- Swipe) main.qml
main.qml
import QtQuick 2.12 import QtQuick.Controls 2.5 ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Tabs") SwipeView { id: swipeView anchors.fill: parent currentIndex: tabBar.currentIndex interactive: false onCurrentIndexChanged: { if (currentIndex === 0) { interactive = false } else { interactive = true Page1Form {} Page2Form {} footer: TabBar { id: tabBar currentIndex: swipeView.currentIndex TabButton { text: qsTr("Page 1") TabButton { text: qsTr("Page 2") }
要复制这个bug:
有什么解决这个问题的建议吗?
发布于 2019-12-13 11:36:33
我是 还在调查这个 ,但是现在您应该能够通过延迟交互属性的分配来解决这个问题:
onCurrentIndexChanged: {