我試圖讓兩個組框彼此相鄰出現,以便每個組框占據視窗的 50%。但是,看起來每個 GroupBox 的寬度會根據 GroupBox 標題長度以某種方式發生變化。
如果兩個 GroupBox 的 GroupBox 標題相同,則它將占視窗的 50%。如果它們不相同,則標題較長的 GroupBox 將占據更多的螢屏。
發生這種情況對我來說沒有意義,我該如何解決它,以便標題的長度不會影響布局中 GroupBox 的大小?
這是重現該問題的示例代碼...
AppGroupBox.qml
import QtQuick 2.0
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.12
GroupBox {
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
spacing:0
label.x: 0
}
AppRowLayout.qml
import QtQuick 2.0
import QtQuick.Layouts 1.12
RowLayout {
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
spacing: 0
}
main.qml
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
Window {
width: 640
height: 480
visible: true
AppRowLayout {
anchors.fill: parent
AppGroupBox {
title: "Short Name"
Layout.fillWidth: true
}
AppGroupBox {
title: "Much Longer Name"
Layout.fillWidth: true
}
}
}
uj5u.com熱心網友回復:
Qt 將相對于Layout.preferredWidth(或者implicitWidth如果未定義)分配可用空間。因此,默認情況下,標題較長的組框將獲得更多空間,因為它implicitWidth更大。
preferredWidth解決方案是對中的所有元素使用固定RowLayout:
GroupBox {
...
Layout.preferredWidth: 50 // or any other fixed value.
Layout.preferredWidth: implicitWidth // OPTIONAL: may be usefull on small screens to ensure the box is not made smaller than the title width
...
}
附加屬性注意事項:
Layout.alignment是( ,或)的子級可用的附加屬性。將它直接設定在一個物件內是沒有用的(除非它本身是另一個專案的子項。LayoutRowLayoutGridLayoutColumnLayoutRowLayoutRowLayoutLayout
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451441.html
