Неработающие поля и якоря в Qt, QML - PullRequest
0 голосов
/ 09 июля 2019

Я новичок в QML и у меня очень запутанная ситуация.Итак, это мой файл main.qml:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.0

Window {

    id:rootWin
    visible: true
    width: 350
    height: 330

    ConnectBox
    {
        id:boxConnect

        MouseArea
        {
            id: connectMouse
            hoverEnabled: true
            anchors.fill: boxConnect
        }
    }

Rectangle {
        id: randomRec
        width: parent.width/2
        height: parent.height/6
//        x: 50
        anchors.top: boxConnect.bottom
//        anchors.horizontalCenter: parent
        anchors.topMargin: 10
        border.color: "dimgray"
        border.width: 5
        radius: 14
    }
}

ConnectBox.qml:

import QtQuick 2.0

Rectangle {
    id: connectRec
    width: parent.width/2
    height: parent.height/6
    anchors.centerIn: parent
    border.color: "dimgray"
    border.width: 5
    radius: 14
}

Я хочу, чтобы он был randomRec ниже boxConnect, так что он делает, но этовсе осталось, и он двигается только когда я ставлю, например, x: 50, но это не удобно для каждого размера окна.

1 Ответ

1 голос
/ 09 июля 2019

Прежде всего: я бы посоветовал поместить якоря, которые связаны друг с другом, в один файл.

Но чтобы randomRec центрировался ниже connectBox, вы должны использовать следующие якоря:

Rectangle {
    id: rect1
    width: 100
    height: 200
    color: "red"

    anchors.centerIn: parent
}

Rectangle {
    id: rect2
    width: 75
    height: 50
    color: "yellow"

    anchors.top: rect1.bottom
    anchors.horizontalCenter: rect1.horizontalCenter
}

Так что я думаю, что вы почти там, с линией horizontalCenter: parent, который также должен иметь .horizontalCenter.Тем не менее, я закрепил его на rect1, так как это то, что вы хотите (допустим, вы захотите переместить boxConnect в будущем ... вам нужно будет найти все ссылки)

...