Я работаю над проектом Qt, где почти все элементы QML находятся в одном файле main.qml
. Приложение использует StackLayout для навигации по другим файлам QML, а также для представления элементов в самом main.qml
.
Я использую Loader для вызова компонента, содержащего GridLayout, содержащий метки и изображения. Вне этого контейнера есть другие изображения и метки, привязанные к нижней части mainWindow
.
Проблема заключается в том, что при вызове компонента в StackLayout с помощью загрузчика размеры компонента перекрывают изображение, определенное в ApplicationWindow. Он ведет себя как fillHeight для всего окна, чего я не хочу.
Вопрос в том, как я могу загрузить компонент, не заполняя все окно, но сохраняя тот же размер, который был изначально до использования StackLayout.
Я все еще новичок в Qt, поэтому приветствуются любые другие предпочтительные методы предложений.
Структура кода аналогична этой,
ApplicationWindow {
id: mainWindow
width: 500
height: 400
(... some code ...)
Image{
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.bottomMargin: 22
anchors.leftMargin: 24
width: 80
height: 40
fillMode: Image.Stretch
source: "qrc:/image.png"
}
StackLayout {
id: mainStackLayout
width: mainWindow.width
height: mainWindow.height
FirstPage {} // another .qml file
Loader {
sourceComponent: component
}
}
Component{
id: component
GridLayout {
id: grid
width: mainWindow.width
height: mainWindow.height
columns: 4
Labels{}
...
...
...
Labels{}
}