2017-05-16 6 views
1

Ich verwende derzeit Qt 5.8.0 64bit auf VS2015, Windows 10 64bit. Laut dem Dokument hat der Typ Connections eine neue Eigenschaft als enabled seit 5.7.0 gewonnen. Das Dokument lautet:Qt QML: Was ist die genaue Bedeutung der Eigenschaft aktiviert von Verbindungen

Diese Eigenschaft enthält, ob das Element Änderungsereignisse akzeptiert.

Ich denke, diese Eigenschaft steuert, ob die Verbindungen gültig sind, oder? Allerdings, wenn ich diese Eigenschaft abstelle und die Verbindungen noch funktionieren! Der Demo-Code ist unten aufgeführt:

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

"taste clicked!" läuft immer noch vom Debug-Ausgang! Was ist die genaue Bedeutung der Eigenschaft "aktiviert"?

PS: es stellt sich heraus, ob ich „enabled“ als true gesetzt (der Standardwert ist auch wahr), und schalten Sie ihn Component.onCompleted ausgeschaltet, werden die Verbindungen ungültig und die Debug-Konsole wird nicht gedruckt „klicken! " beim Klicken auf die Schaltfläche:

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; 
} 

Ist es ein Fehler?

+0

Mit dem beschriebenen Verhalten scheint es ein Fehler zu sein. Ich habe diese Funktion nie benutzt, da Sie das Ziel auf "null" setzen können, um die 'Verbindungen' zu deaktivieren. – derM

+1

Ja, ich habe die Verbindungen wie gesagt kontrolliert. Wenn es jedoch funktioniert, scheint "aktiviert" viel aussagekräftiger und selbst erklärender zu sein, als das Ziel auf "null" zu setzen. –

Antwort

2

Ja, Sie sind auf einen Fehler gestoßen, der Anfangswert der Eigenschaft enabled wird ignoriert. enabled wird nur berücksichtigt, wenn der Wert geändert wird, nachdem der Artikel Connections vollständig initialisiert wurde. Daher ist Ihr Component.onCompleted Trick eine nette Abhilfe.

Ich habe das Problem bei https://codereview.qt-project.org/#/c/194840/ behoben.

Verwandte Themen