我正在尝试为我的应用程序编写一个顶部栏,它应该主要包含应用程序徽标(一个小图像)和应用程序标题(只是文本)。此外,我希望这个顶栏根据窗口的高度自动调整大小。
我是 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
组件它的高度应该跟随 logo 的高度,并且告诉Image
(logo) 组件它的高度应该是Rectangle
(mainwindow) 组件的 1/20。
使用Row
容器,代码的行为符合预期,但我收到了一个恼人的警告 ( QML Row: Cannot specify left, right, horizontalCenter, fill or centerIn anchors for items inside Row. Row will not function.
),我必须做很多锚定。相反,如果我使用RowLayout
容器,我可以删除大部分锚点,但Image
完全忽略它的height
属性(但文本仍然可以正确调整大小)。所以问题是:
- 这是
RowLayout
组件的错误吗?我正在使用支持 Android的 Qt-5.1.0-Beta,所以这可能是一个解释 - 如何在
Row
不使用子组件锚点的情况下使用组件,从而避免警告? - 我错过了一些重要的东西,或者我几乎走上了正确的轨道,但我必须忍受这个 Qt 测试版,直到发布稳定版本?