Я застрял с этой основной проблемой в QML.Я должен сказать, что даже если я уже работал с Qt, я новичок в QML.
Я определяю вертикальный SplitView в ApplicationWindow и пытаюсь установить высоту нижнего вида в процентах отвысота окнаЭто работает нормально, пока я не установил панель инструментов окна.Когда я делаю это, высота дна просто равна нулю.
После попытки некоторых обходных путей мне удалось показать это, добавив дополнительное значение, которое должно быть больше, чем процент, умноженный на высоту панели инструментов (46 пикселей на моемэкран).
Это действительно странно для меня и совсем не очевидно.Похоже, что QML не пересчитывает высоту вида снизу, если он обнуляет инициализацию, но делает это хорошо, если при инициализации он больше нуля (работает даже с 0,01 пикселями ...).
Мой код:
import QtQuick 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
ApplicationWindow {
id: mainWindow
width: 640; height:480
toolBar: ToolBar {}
SplitView {
orientation: Qt.Vertical
anchors.fill: parent
Component.onCompleted: { print("Split view: " + width + "x" + height) }
onHeightChanged: print("Split view: " + width + "x" + height)
Rectangle {
Layout.fillHeight: true
Text {
text: "Top"
anchors.centerIn: parent
}
}
Rectangle {
height: 0.1 * parent.height
Text {
text: "Bottom"
anchors.centerIn: parent
}
Component.onCompleted: { print("Bottom: " + width + "x" + height + " (parent " + parent.height + ")") }
onHeightChanged: print("Bottom: " + width + "x" + height + " (parent " + parent.height + ")")
}
}
}
Спасибо, если у кого-нибудь есть идея написать это правильно (если это не ошибка Qt ...).