Проблема с Qt QML - PullRequest
       10

Проблема с Qt QML

1 голос
/ 27 мая 2011

У меня проблема с якорями в файле QML, этот код не работает, anchors.left не применяется к тексту, текст остается в флажке:

Checkbox{
    objectName: "chkRemenber"
    id: chkRemenber
}
Text {
    id: labRemenber
    text: "REMENBER"
    anchors.left: chkRemenber.right
}

Но если я не использую свой собственный компонент, но изображение, оно работает, текст слева от chkRemenber2:

Image {
    id: chkRemenber2
    width: 30
    height: 30
    source: "../checkbox_on.png"
    fillMode: Image.PreserveAspectFit;
    MouseArea {
        anchors.fill: parent
        onClicked: toggle()
    }
}
Text {
    id: labRemenber2
    text: "REMENBER"
     anchors.left: chkRemenber2.right
}

это код моего флажка:

import QtQuick 1.0

Rectangle {
id: container
property bool pressed: false
property string src: "../checkbox_off.png"

function toggle (){
    if (container.state == "on")
        container.state = "off";
    else
        container.state = "on";
    console.log("CLICK ! " + container.state);
}

Image {
    id: checkBoxImg
    width: 30
    height: 30
    source: src
    fillMode: Image.PreserveAspectFit;

    MouseArea {
        anchors.fill: parent
        onClicked: toggle()
    }
}
states: [
    State {
        name: "on"
        PropertyChanges { target: checkBoxImg; source: "../checkbox_on.png" }
        PropertyChanges { target: container; pressed: true }

    },
    State {
        name: "off"
        PropertyChanges { target: checkBoxImg; source: "../checkbox_off.png" }
        PropertyChanges { target: container; pressed: false }
    }
]
}

1 Ответ

3 голосов
/ 27 мая 2011

Я думаю, что из-за отсутствия размеров на якорях, указанных для вашего компонента Checkbox, QML Engine не знает, как его расположить. Попробуйте эти варианты.

  • Укажите размеры (высота, ширина) или привязки к компоненту флажка
  • Используйте элемент «Столбец» или «Строка», чтобы вам не приходилось микро-управлять макетами.
...