gpt4 book ai didi

qt - QML 布局 : How to give weights to items in a row or column layout?

转载 作者:行者123 更新时间:2023-12-02 11:06:16 25 4
gpt4 key购买 nike

我试图找出一种通过为每个项目指定一种权重来按比例布局项目的方法。例如,Android 的方式是 layouts .

我试图实现它的方式如下:

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3

GridLayout {
columns: 4
width: 640
height: 480

Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
}

我希望中间矩形的宽度是其他两个矩形的宽度之和,但实际上它们都是相等的宽度。

在布局附加属性上使用关系绑定(bind)似乎总是会导致奇怪的绑定(bind)循环。我知道我可以只使用 Row 来代替关系绑定(bind),但如果可能的话,我更愿意使用布局。

编辑

这似乎按照我想要的方式工作,但我不知道为什么会这样。它的行为就好像 preferredWidth 值是项目的重量。

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3

RowLayout {
width: 640
height: 480

Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}

最佳答案

不确定是否有意,但 Layout.preferredWidth (或 ColumnLayouts 的 Layout.preferredHeight)可以用作“权重”。当同时指定 Layout.minimumWidth 时,事情就会中断,但我认为在尝试根据权重实现布局时指定最小尺寸没有多大意义。

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3

RowLayout {
width: 640
height: 480

Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}

关于qt - QML 布局 : How to give weights to items in a row or column layout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com