0

抱歉可能是一个愚蠢的问题 - 我对 QML 很陌生。

我的 StackView 页面之一:

Page
{
    id : root

    header: ToolBar
    {   
        BackButton
        {
            anchors.left: parent.left
        }
    }
}

返回按钮代码:

Button
{
    text: "<"
    font.pixelSize: 20
    width: 30
    onClicked: parent.root.StackView.view.pop()
}

我也试过 parent.StackView 。没运气。得到:

TypeError: Cannot call method 'pop' of null

有解决办法吗?

4

2 回答 2

2

我会建议这样的事情。

main.qml:

import QtQuick 2.6
import QtQuick.Controls 2.0

StackView {
    id: stackView
    initialItem: Page {
        header: ToolBar {
            BackButton {
                anchors.left: parent.left
                view: stackView
            }
        }
    }
}

BackButton.qml:

import QtQuick 2.6
import QtQuick.Controls 2.0

Button {
    property StackView view
    text: "<"
    font.pixelSize: 20
    width: 30
    onClicked: view.pop()
}

这样,您就不会依赖id组件外部的 an 。相反,您传入您希望 BackButton 操作的实例 - 这在未来重构时不会那么脆弱。

于 2017-01-14T20:41:54.347 回答
1
  1. Qt 或 Visual Studio 2015 中存在某种错误。在对 QML 进行一些修改后,通常需要完全重建。
  2. root.StackView.view.pop() 是正确的。
于 2017-01-14T16:43:13.927 回答