2017-05-16 84 views
1

我目前在VS2015,Windows 10 64bit上使用Qt 5.8.0 64位。根據該文件,類型Connections自5.7.0以來獲得了enabled的新屬性。該文檔說:Qt QML:Connections的啓用屬性的確切含義是什麼

此屬性保持項目是否接受更改事件。

我猜這個屬性控制連接是否有效,對不對?但是,當我關閉此屬性時,連接仍在工作!演示代碼如下:

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!"); 
     } 
    } 
} 

「button clicked!」仍然從調試輸出中耗盡! 「啓用」屬性的確切含義是什麼?

PS:事實證明,如果我設置爲「Enabled」爲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; 
} 

這是一個錯誤?

+0

隨着所描述的行爲,它似乎是一個錯誤。我從來沒有使用過這個功能,因爲你可以將target設置爲null來關閉Connections。 – derM

+1

是的,我曾經像你說的那樣控制連接。然而,「啓用」,如果它起作用,似乎比設置目標爲'null'更有意義和自我解釋。 –

回答

2

是的,你偶然發現了一個bug,enabled屬性的初始值被忽略。 enabled僅在Connections項目已完全初始化後更改值時才予以考慮。因此你的Component.onCompleted技巧是一個很好的解決方法。

我已經解決了這個問題在https://codereview.qt-project.org/#/c/194840/

相關問題