无法使用按钮关闭窗口:QML

5
我已经创建了一个项目,其中包含一个按钮。我想用这个按钮关闭项目的父窗口,但当我点击这个项目时,我得到了这个消息:

TypeError: 对象 QQuickRootItem(0x1d8efed8) 的属性 'close' 不是一个函数

你能帮我解决这个问题吗?

项目代码:

import QtQuick 2.4

Item {

    id: backButton

    ItemForButton{

        id: baseButton
        text: "Back"

        onClicked: {

            backButton.parent.close()
        }

    }

}

窗口的代码:

Window {

        id: window
        visible: true
        BackButton {

        }
        x: 30
        y: 30
    }
1个回答

8

这看起来有点混乱。如果我是你,我会给自定义按钮类型添加一个点击信号。例如:

项目:

import QtQuick 2.4

Item {
    id: backButton

    // Add a clicked signal here
    signal clicked()

    ItemForButton{

        id: baseButton
        text: "Back"

        onClicked: {
            // Emit the new clicked signal here:
            backButton.clicked();
        }
    }
}

窗口:

Window {
    id: window
    visible: true

    BackButton {
        // Respond to the signal here.
        onClicked: window.close();
    }
}

这提供了灵活性,使您将来可以以其他方式使用自定义的BackButton类型。

1
这个问题并没有回答为什么backButton的父对象不是Window。我认为大家应该知道Window不是一个QQuickItem,因此不能成为任何QQuickItemparent(属性而非函数)。 - Arpegius
我已经按照你写的做了。谢谢。看起来,我的代码由于范围的问题无法完成。 - Nazarii Plebanskii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接