QML은 Javascript로 설정된 속성에서 NaN을 반환합니다.

바스티안

객체 생성시 Java 스크립트를 사용하여 QML 객체의 속성을 설정하고 있습니다. 숫자가 필요한 하나의 매개 변수를 제외하고는 잘 작동합니다.

이것은 스크립트를 호출합니다.

Component.onCompleted: CreateVerticalGaugeScript.createVerticalGauge(300,10,300,300,"MAP",Dashboard,"MAP");

"MAP"앞에있는 300은 필요한 숫자입니다. 다른 모든 것이 작동합니다.

var component;
var gauge;
function createVerticalGauge(setWidth,setX,setY,setMaxValue,setID,SetValueObject,SetValueProperty) {
    component = Qt.createComponent("verticalbargauge.qml");
    console.log(setMaxValue)
    if (component.status == Component.Ready)
        finishCreation(setWidth,setX,setY,setMaxValue,setID,SetValueObject,SetValueProperty);
    else
        component.statusChanged.connect(finishCreation);
}

    function finishCreation(setWidth,setX,setY,setMaxValue,setID,SetValueObject,SetValueProperty) {
        console.log(setMaxValue)
        if (component.status == Component.Ready) {
            gauge = component.createObject(adaptronicDash, {"id": setID, "gaugemaxvalue": setMaxValue,
                                               "gaugetext": Qt.binding(function(){return SetValueObject[SetValueProperty]}),
                                               "x": setX, "y": setY});
            gauge.width = setWidth;
            if (gauge == null) {
                // Error Handling
                //console.log("Error creating object");
            }
        } else if (component.status == Component.Error) {
            // Error Handling
            //console.log("Error loading component:", component.errorString());
        }
    }

이제 객체가 생성되면 QML에 NaN 값이 있습니다. jas console.log에서 300 값이 설정되었음을 보여줍니다.

생성 된 QML은 다음과 같습니다.

import QtQuick 2.8
import QtQuick.Controls.Styles 1.4
import QtQuick.Extras 1.4
import QtQml.Models 2.2


Rectangle {
        id: initalID
        width: 100
        height: 80
        color: "transparent"
        antialiasing: false
        Drag.active: dragArea.drag.active

        property alias gaugetext: gaugetextfield.text
        property alias gaugemaxvalue: gauge.maximumValue

        MouseArea {
                  id: dragArea
                  width: parent.width
                  height: parent.height + 10 // easier to get
                  anchors.centerIn: parent
                  drag.target: parent
                  drag.axis: Drag.XAndYAxis
                  //onClicked: pieMenu.popup(mouseX, mouseY), console.log("clicked")
                }

        Gauge {
            id: gauge
            anchors.fill: parent
            anchors.margins: 10
            orientation : Qt.Horizontal
            minorTickmarkCount: 4
            tickmarkStepSize : 5000
            //labelStepSize: 50
            minimumValue: 0
            maximumValue: 10000

            //value: Dashboard.revs
            Behavior on value {
                NumberAnimation {
                    duration: 5
                }
            }
            Text {
                id: gaugetextfield
                font.pixelSize: (parent.height / 3)
                anchors.top : parent.top
                font.bold: true
                font.family: "Eurostile"
                color: "white"
                anchors.horizontalCenter: parent.horizontalCenter
            }
              style: GaugeStyle {
                valueBar: Rectangle {
                   implicitWidth:  rev.height /3
                    color: Qt.rgba(gauge.value / gauge.maximumValue, 0, 1 - gauge.value / gauge.maximumValue, 1)
                }
            }
      }
}

값에 액세스 하려면 속성 별칭 gaugemaxvalue 를 사용합니다. Javascript에서 직접 숫자를 설정하면 작동합니다.

탈라 마키

게이지 maximumValue를 300 으로 설정 하고 tickmarkStepSize5000입니다.

maximumValue를 30000으로 변경하거나 tickmarkStepSize를 주석 처리하여 테스트하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

동적으로 설정된 백본 컬렉션 URL은 속성없이 모델을 반환합니다.

init 메서드에 설정된 문자열 속성은 항상 빈 문자열을 반환합니다.

반환은 Javascript에서 정의되지 않은 반환을 반환합니다.

로그 호출은 C에서 NaN을 반환합니다.

qml은 C++에서 텍스트 속성을 설정합니다.

BitmapFactory.decodeFile은 inJustDecodeBounds가 false로 설정된 상태에서 null을 반환합니다.

automapper 상속 프로필은 json에서 추가 속성을 반환합니다.

golang은 지정된 경로에서 정적 HTML 파일을 반환합니다.

QML-JavaScript에서 설정할 수 있도록 QML 구성 요소 속성을 만드는 방법은 무엇입니까?

WebApi는 null로 설정된 지정된 속성에서 지정되지 않은 속성을 알려주는 방법은 무엇입니까?

사용자 정의 __dir __ ()은 알파벳순으로 정렬 된 속성 목록을 반환합니다.

Pandas read_html ()은 특정 열에서 'nan'을 반환합니다.

WinRT에서 DependencyObject로 설정된 모든 연결된 속성을 가져 오는 방법은 무엇입니까?

app.js는 때때로 TypeError를 반환합니다 : 전체 질문에서 정의되지 않은 속성 '0'을 읽을 수 없습니다.

QML은 다른 qml 파일의 JS 함수에서 속성 별칭을 수정합니다.

Kotlin에서 리플렉션으로 위임 된 속성 값을 설정하는 방법은 무엇입니까?

JavaScript에서 문자열 이름이 지정된 객체 속성 (..의 객체 속성)을 설정하는 방법은 무엇입니까?

QML 로더: "source:" 속성을 한 번만 설정합니다.

Kotlin은 동적으로 추가 된 편집 텍스트에 속성을 설정합니다.

Kotlin은 동적으로 추가 된 편집 텍스트에 속성을 설정합니다.

정확한 페치는 프로시저에서 요청된 수보다 많은 행을 반환합니다.

JSON은 camelCase 대신 PascalCase에서 속성을 반환합니다.

요청 속성은 구문에서 null을 반환합니다.

Typescript에서 다른 선택적 속성이 설정된 경우 속성을 필수로 만드는 방법은 무엇입니까?

SoftLayer API SoftLayer_Billing_Item은 문서에 정의되지 않은 resourceTableId 속성을 반환합니다.

DropDown은 속성 이름에 바인딩합니다. 첫 번째 설정된 두 번째 DropDown 바인딩을 기반으로

ES5 JavaScript: 중첩 객체에서 특정 속성을 찾아 값을 반환합니다.

팁 계산 방정식은 첫 번째 출력에서 작동하지만 number ()로 두 번째 출력에서 NaN을 반환합니다.

인덱스로 배열 주소 지정은 Javascript에서 배열을 반환합니다.