QML: Что именно делает свойство "x" и в чем разница с anchors.leftMargin / rightMargin в ListView? - PullRequest
1 голос
/ 19 июня 2019

Я попытался добавить поле к элементу ListView, используя anchors.leftMargin, ожидая, что это создаст поле между границей экрана и началом списка, но это не сработало вообще.Использование x вместо этого решило проблему.Вот код:

   ListView {
    id: list
    width: parent.width - sideMargin
    x: sideMargin //works
    anchors.leftMargin: sideMargin //doesn't work
    orientation: ListView.Horizontal
    focus: true
    spacing: 16
    //...
   }

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

1 Ответ

1 голос
/ 19 июня 2019

Элементы в QML / QtQuick можно позиционировать и измерять тремя различными способами:

  1. Свободно используя свойства x и y для позиции и the width и height свойства по размеру.См. https://doc.qt.io/qt-5/qml-qtquick-item.html#x-prop для получения дополнительной информации.

    ListView {
        id: list
        width: parent.width - sideMargin
        x: sideMargin
        y: topMargin
    }
    
  2. Использование макетов или, в более общем случае, контейнеров, таких как ColumnLayout.Вся работа выполняется макетом, и вам не нужно ничего делать, но вы все равно можете дать подсказки контейнеру.

  3. Использование anchors.Это делается через свойства anchors каждого Item.Это работает путем прикрепления (привязки) Items друг к другу.

    ListView {
        id: list
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.leftMargin: sideMargin
    }
    

Примечание : Не смешивайте эти 3 способа на одном Item как вы можете создавать конфликты или иметь неожиданные результаты.В вашем случае вы используете метод 3 для установки поля без установки позиции и номер 1 для установки ширины, и, следовательно, он не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...