从另一个对象更改StackLayout的索引

时间:2018-02-16 14:58:08

标签: qt qml qt5

我的应用程序中有一个StackLayout,我试图通过按下这样的按钮来改变它的当前索引:

ApplicationWindow 

{
    visible: true
    title: qsTr("Test")

     StackLayout 
     {
        id: mainStack

        WelcomePage // Custom qml page with button (userLoginMouseArea)
        {
            id: welcomeId
            mainStack.currentIndex: userLoginMouseArea.pressed ? 1 : 0
        }

        Page
        {
            // switch to this page if button is pressed
        }
     }
}

我在Qt Creator中收到错误

Invalid property name mainStack (M16)

当我尝试构建时,我得到一个"不存在的属性mainStack错误。

1 个答案:

答案 0 :(得分:1)

mainStack.currentIndex不是WelcomePage的属性,因此在该位置建立连接是不正确的,您必须在StackLayout中执行此操作:

StackLayout
{
    id: mainStack

    currentIndex: welcomeId.userLoginMouseArea.pressed ? 1 : 0

    WelcomePage
    {
        id: welcomeId
    }
    Page
    {

    }
}

虽然我不认为在你的情况下是解决方案,因为你已经在pressed按钮和currentIndex之间建立了约束,所以如果你停止按下按钮它会显示{{1}再次,如果您只想更改页面,您可以传递点击的信号:

<强> WelcomePage.qml

WelcomePage

<强> main.qml

Page {
    id: pg
    signal clicked()
    MouseArea{
        id: ma
        anchors.fill: parent
        onClicked: pg.clicked()
    }
}