Qt QML:启用Connections的属性的确切含义是什么

时间:2017-05-16 08:54:42

标签: qt qml qt5 qtquick2 qtquickcontrols2

我目前在VS2015,Windows 10 64bit上使用Qt 5.8.0 64bit。根据该文档,类型Connections自5.7.0以来获得了enabled的新属性。医生说:

  

此属性保存项目是否接受更改事件。

我猜这个属性控制连接是否有效,对吧?但是,当我关闭此属性,并且连接仍然有效!演示代码如下:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button{
        id: button
        anchors.centerIn: parent
        width: 100
        height: 50
        text: "Click!"
    }

    Connections{
        target: button
        enabled: false
        onClicked:{
            console.log("button Clicked!");
        }
    }
}

“按钮点击!”仍在从调试输出中耗尽! “启用”属性的确切含义是什么?

PS:如果我将“enabled”设置为true(默认值也为true),并将其关闭Component.onCompleted,连接将变为无效且调试控制台不会打印“按钮点击!”点击按钮后再说:

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button{
        id: button
        anchors.centerIn: parent
        width: 100
        height: 50
        text: "Click!"
    }

    Connections{
        id: connections
        target: button
        enabled: true
        onClicked:{
            console.log("button Clicked!");
        }
    }
    Component.onCompleted: connections.enabled = false;
}

这是一个错误吗?

1 个答案:

答案 0 :(得分:2)

是的,您偶然发现了一个错误,enabled属性的初始值被忽略了。只有在enabled项目完全初始化后更改了值,才会考虑Connections。因此,Component.onCompleted技巧是一个很好的解决方法。

我已在https://codereview.qt-project.org/#/c/194840/修正了此问题。