边距和锚点在Qt,QML中效果不佳

时间:2019-07-09 11:12:38

标签: qt qml margin

我是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 个答案:

答案 0 :(得分:1)

首先,我建议将彼此相关的锚点放在同一文件中。

但是要使randomRecconnectBox下方居中,您应该使用以下锚点:

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 ...您将必须找到所有引用)