Я пытаюсь написать верхнюю панель для моего приложения, которое должно содержать главным образом логотип приложения (небольшое изображение) и название приложения (только текст). Более того, я бы хотел, чтобы этот верхний барабан автоматически изменялся в соответствии с высотой окна.
Я новичок в QML, но я полагаю, что я должен обернуть эти компоненты внутри Row
или RowLayout
. Это мой пример кода:
import QtQuick 2.0
import QtQuick.Layouts 1.0
Rectangle
{
id: mainwindow
width: 1024
height: 600
Row
{
id: rowlayout
height: logoimage.height
spacing: 5
property int count: 3
anchors
{
left: parent.left
right: parent.right
top: parent.top
}
Image
{
id: logoimage
source: "qrc:/images/resources/images/icon.png"
height: mainwindow.height / 20
anchors.top: parent.top
anchors.left: parent.left
}
Text
{
id: logotext
text: qsTr("This is my logo text")
font.pixelSize: parent.height
font.family: "Sans Serif"
height: parent.height
verticalAlignment: Text.AlignVCenter
anchors.top: parent.top
anchors.left: logoimage.right
}
/*
Rectangle
{
id: otherrect
height: parent.height
color: "lightgreen"
anchors.top: parent.top
anchors.left: logotext.right
anchors.right: parent.right
}
*/
}
}
Я передаю компоненту Row
, что его высота должна соответствовать высоте логотипа и компоненту Image
(логотип), что его высота должна быть 1/20 из компонента Rectangle
(mainwindow).
Используя контейнер Row
, код ведет себя как ожидалось, но я получаю раздражающее предупреждение (QML Row: Cannot specify left, right, horizontalCenter, fill or centerIn anchors for items inside Row. Row will not function.
), и мне нужно сделать много привязки. И наоборот, если я использую контейнер RowLayout
, я могу удалить большинство якорей, но Image
полностью игнорирует его height
(но текст по-прежнему изменяется правильно). Итак, вопросы:
- - это ошибка в компоненте
RowLayout
? Я использую Qt-5.1.0-Betastrong > с поддержкой Android, поэтому это может быть объяснение. - Как я могу использовать компонент
Row
без использования якорей в своих дочерних элементах и, таким образом, избежать предупреждения? - Мне не хватает чего-то важного, или я почти на правильном пути, но я должен нести эту бету Qt до тех пор, пока не будет выпущена стабильная версия.