Я использую QML (Qt Quick), чтобы настроить графический интерфейс приложения, и у меня возникло странное поведение.QML/Qt Быстрый странный макет
Вот мой начальный фрагмент кода:
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, чтобы повернуть бегунок и использовать повернутый ползунок, чтобы вычислить расположение, но это не то, что происходит , Фактически, макет, по-видимому, вычисляется при слабом слайдере, но только ползунок вращается. Это заканчивается с макетом, который больше не является колонка:
Это выглядит немного глючит, нет? Или я делаю что-то неправильно?
Теперь возникает другая проблема, когда я оберните ползунок в пункте (я был на самом деле играет с элементами, чтобы увидеть, если я мог бы найти обходной путь):
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
}
}
}
}
И в этом случае то, что я получаю это слайдер над этикеткой (хотя он определен после него в коде):
Это также выглядит странно для меня ... Кто-нибудь имеет представление о том, что я сделал не так?
Обратите внимание, что снимки экрана сняты с Дизайнер, но запуск программы приводит к точно таким же проблемам.
С наилучшими пожеланиями,
Antoine Rennuit.
Вау, я впечатлен! Большое спасибо за вашу помощь. – arennuit