我正在使用 QML (Qt Quick) 来设置应用程序的 GUI,但我的行为很奇怪。
这是我最初的一段代码:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Rectangle {
id: rectangle1
color: palette.grey
ColumnLayout
{
id: columnLayout1
Label
{
id: label1
text: qsTr("Target")
font.pointSize: 22
}
ProgressBar
{
id: progressBar1
value: 0.5
}
} }
...这给出了布局:
然后我锚定中心:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Rectangle
{
id: rectangle1
color: palette.grey
ColumnLayout
{
id: columnLayout1
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
Label
{
id: label1
text: qsTr("Target")
font.pointSize: 22
}
ProgressBar
{
id: progressBar1
value: 0.5
}
}
}
没问题,我得到:
现在当我旋转滑块时出现问题:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Rectangle
{
id: rectangle1
color: palette.grey
ColumnLayout
{
id: columnLayout1
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
Label
{
id: label1
text: qsTr("Target")
font.pointSize: 22
}
ProgressBar
{
id: progressBar1
rotation: 90
value: 0.5
}
}
}
在这里,我期待 Qt 旋转滑块并使用旋转的滑块来计算布局,但事实并非如此。实际上,布局似乎是在未旋转滑块的情况下计算的,然后仅旋转了滑块。这最终得到一个不再是列的布局:
这看起来有点马车,不是吗?还是我做错了什么?
现在,当我将滑块包装在 Item 中时,会出现另一个问题(我实际上是在玩 Items 以查看是否可以找到解决方法):
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Rectangle
{
id: rectangle1
color: palette.grey
ColumnLayout
{
id: columnLayout1
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
Label
{
id: label1
text: qsTr("Target")
font.pointSize: 22
}
Item
{
ProgressBar
{
id: progressBar1
value: 0.5
}
}
}
}
在这种情况下,我得到的是标签上方的滑块(尽管它是在代码中定义的):
这对我来说也很奇怪......有人知道我做错了什么吗?
请注意,屏幕截图是从Designer中捕获的,但运行该程序会导致完全相同的问题。
亲切的问候,
安托万·伦努特。