Сетка не уважает leftMargin

Alexander Dyagilev спросил: 10 мая 2018 в 04:47 в: qt

Qt 5.11. Я использую Column для размещения моих элементов управления. Для этого элемента столбца я устанавливаю anchors.leftMargin: 10. Все элементы для детей уважают это, за исключением Grid.

Снимок экрана о том, что я получаю:

введите описание изображения здесь

Код QML:

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")    Column
    {
        anchors.fill: parent
        anchors.leftMargin: 10        RadioButton
        {
            text: qsTr("System proxy")
        }        RadioButton
        {
            text: qsTr("No proxy")
        }        RadioButton
        {
            text: qsTr("Configure manually:")
        }        Grid
        {
            columns: 5
            spacing: 10
            Label {text: " "}
            Label {text: qsTr("Address")}
            Label {text: qsTr("Port")}
            Label {text: qsTr("Login")}
            Label {text: qsTr("Password")}
            Label {text: "HTTP"}
            TextField {width: 100}
            TextField {width: 40}
            TextField {width: 100}
            TextField {width: 100}
        }
    }
}

Я что-то не так?

1 ответ

Есть решение
eyllanesc ответил: 10 мая 2018 в 05:17

Проблема заключается не в Grid, а в RadioButton, у них есть дополнительное дополнение:

Элемент управления имеет следующий макет:

Итак решение задает leftPadding значение 0 RadioButton s:

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")    Column
    {
        anchors.fill: parent
        anchors.leftMargin: 10        RadioButton
        {
            text: qsTr("System proxy")
            leftPadding: 0
        }        RadioButton
        {
            text: qsTr("No proxy")
            leftPadding: 0
        }        RadioButton
        {
            text: qsTr("Configure manually:")
            leftPadding: 0
        }        Grid
        {
            columns: 5
            spacing: 10
            Label {text: " "}
            Label {text: qsTr("Address")}
            Label {text: qsTr("Port")}
            Label {text: qsTr("Login")}
            Label {text: qsTr("Password")}
            Label {text: "HTTP"}
            TextField {width: 100}
            TextField {width: 40}
            TextField {width: 100}
            TextField {width: 100}
        }
    }
}

Alexander Dyagilev ответил: 10 мая 2018 в 04:19
Ну, это означает, что он не работает для столбца, тогда ... leftPadding следует использовать вместо anchors.leftMargin.

Дополнительное видео по вопросу: Сетка не уважает leftMargin

Introduction to Qt – Intro to Qt Quick Controls {tutorial}

Qt Quick Controls Imagine Style

Qt Quick Controls & Qt Quick Designer