2014-07-08 18 views
9

Hoàn toàn mới đối với QT và QML. Tôi đang cố gắng để thiết lập màu sắc của một hình chữ nhật dựa trên mối quan hệ giữa hai propery đôi callValuehandRaiseXBB, nhưng tôi nhận được lỗiNếu tuyên bố trong QML

dấu hiệu bất ngờ nếu"

dự kiến ​​một id tên đủ điều kiện

Bất cứ ai có thể cho tôi biết tôi là gì ng sai?

import QtQuick 2.0 

Item{ 
    id: hand 

    property double callValue: 0.0 

    property double handRaiseXBB: 100 
    property string handCallColor: "green" 
    property string handFoldColor: "grey" 

    Rectangle { 
     anchors.fill: hand 
     if (hand.callValue >= hand.handRaiseXBB) { 
      color: hand.handFoldColor 
     } 
     else { 
      color: hand.handCallColor 
     } 
    } 
} 
+4

Chỉ cần nhớ rằng QML là ngôn ngữ khai báo, và bạn có thể viết mã bắt buộc trong các chức năng hay ràng buộc thuộc tính, nhưng không phải trong định nghĩa đối tượng. – QtRoS

Trả lời

14

Bạn có thể làm điều đó như thế này:

color: (hand.callValue >= hand.handRaiseXBB) ? hand.handFoldColor : hand.handCallColor 

Bạn cũng có thể làm cho một chức năng để tính toán nó và sau đó gán thuộc tính màu sắc với giá trị trả về của hàm:

function getHandColor() 
{ 
    var handColor = hand.handCallColor 
    if(hand.callValue >= hand.handRaiseXBB) 
    { 
     handColor = hand.handFoldColor 
    } 
    return handColor 
} 
color: getHandColor() 
+2

Ước gì tôi có thể upvote hai lần! Cảm ơn! –

+2

@ Q-bertsuit: qml được xây dựng dựa trên javascript, vì vậy có vẻ như bạn sẽ cần phải tìm hiểu điều đó. – lpapp

1

Một biểu mẫu khác để slove này là

Rectangle { 
    ... 
    color: { 
     color = hand.handCallColor 
     if(hand.callValue >= hand.handRaiseXBB) 
      color = hand.handFoldColor 
    } 
    ... 
} 

Nhưng biểu mẫu với toán tử bậc ba là một dạng tốt hơn!

QML được "dựa" trong javascript, sau đó i belive rằng tất cả itens là những đối tượng javascript, làm thế nào để:

var Rectangle: { 
    color: "red", 
    id: "id", 
    //then we can do this 
    setColor: function(_color) {this.color = _color} 
} 
Các vấn đề liên quan