QML не может привязать элемент к макету - PullRequest
0 голосов
/ 24 мая 2019

Обратите внимание на этот быстрый пример:

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.2

ApplicationWindow {
    visible: true
    width: 100
    height: 100

    Label {
        text: "foobar"

        anchors.bottom: row.top
        anchors.left: label1.right
    }

    RowLayout {
        id: row
        anchors.bottom: parent.bottom
        width: parent.width

        Label {
            id: label1
            text: "hello1"
            Layout.alignment: Qt.AlignLeft
        }
        Label {
            id: label2
            text: "hello2"
            Layout.alignment: Qt.AlignRight
        }
    }
}

У меня есть два элемента в макете строки, и я хочу привязать третий ярлык к одному из них. Вот что я получаю: foobad

Я ожидаю, что foobar будет более правым, но это не то, что я получаю.

Также при этом любые поля, которые я установил для метки, будут также игнорироваться.

Я могу привязать к окну или к RowLayout, и это будет хорошо работать, но по какой-то причине я не могу привязать элементы внутри макета. В чем причина и какое решение для этого подходит?

1 Ответ

2 голосов
/ 24 мая 2019

Когда вы компилируете программу, вы получите ошибку: Cannot anchor to an item that isn't a parent or sibling. Вот ответ , почему вы не можете привязать. Мое решение в том, что мы будем привязывать слева от row и затем делать поле с шириной label1 внутри строки.

Вот скриншот.

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.2

ApplicationWindow {
    visible: true
    width: 100
    height: 100

    Label {
        color: "#b7087d"
        text: "foobar"

        anchors.bottom: row.top
        anchors.left: row.left
        anchors.leftMargin: label1.width
    }

    RowLayout {
        id: row
        anchors.bottom: parent.bottom
        width: parent.width

        Label {
            id: label1
            color: "#b22424"
            text: "hello1"
            Layout.alignment: Qt.AlignLeft
        }
        Label {
            id: label2
            color: "#1e62ce"
            text: "hello2"
            Layout.alignment: Qt.AlignRight
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...