Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Qml GridLayout如何指定列宽?_Qt_Qml_Grid Layout_Column Width - Fatal编程技术网

Qt Qml GridLayout如何指定列宽?

Qt Qml GridLayout如何指定列宽?,qt,qml,grid-layout,column-width,Qt,Qml,Grid Layout,Column Width,我有一个包含两个groupbox的列,每个列都有一个GridLayout 这是我的密码: Window { visible: true width: 500 height: 480 title: qsTr("GridLayoutTest") Column { GroupBox { contentWidth: gl1_.width contentHeight: gl1_.height Grid

我有一个包含两个
groupbox
的列,每个列都有一个
GridLayout

这是我的密码:

 Window {
    visible: true
    width: 500
    height: 480
    title: qsTr("GridLayoutTest")
Column
{
    GroupBox
    {
        contentWidth: gl1_.width
        contentHeight: gl1_.height
            GridLayout
            {
                id: gl1_
                columns: 2
                width: 200
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 45; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 50; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 45; Layout.preferredHeight: 25; color: "purple"; }
            }
    }
    GroupBox
    {
        contentWidth: gl2_.width
        contentHeight: gl2_.height
            GridLayout
            {
                id: gl2_
                columns: 2
                width: 200
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 35; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
                Rectangle { Layout.preferredWidth: 60; Layout.preferredHeight: 25; color: "purple"; }
            }
    }
}
}

我的问题如下:每个
gridLayout
都有自己的对齐方式,我的右侧元素都没有正确对齐。我希望所有正确的元素都具有相同的对齐方式

结果:


这是一种方法吗?

好的,您的尺寸有问题。您可以将
GridLayout
width定义为200px,但也可以定义项目的大小,例如第一行id 60+25=85,而不是200。因此,布局必须以某种方式修复它。我猜它是根据物品的大小来拉伸细胞的

因此,必须为所有布局的第一列设置固定大小。第二列的剩余空间可以用项目包装:

Column {
    anchors.fill: parent
    anchors.margins: 20
    GroupBox {
        id: box1
        title: "group 1"
        width: parent.width
        GridLayout {
            width: parent.width
            columns: 2
            Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
            Item {
                Layout.fillWidth: true
                implicitHeight: 40;
                Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 180 }
            }
            Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
            Item {
                Layout.fillWidth: true
                implicitHeight: 40;
                Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 60 }
            }
        }
    }
    GroupBox {
        id: box2
        title: "group 2"
        width: parent.width
        GridLayout {
            width: parent.width
            columns: 2
            Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
            Item {
                Layout.fillWidth: true
                implicitHeight: 40;
                Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 80 }
            }
            Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
            Item {
                Layout.fillWidth: true
                implicitHeight: 40;
                Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 120 }
            }
        }
    }
}

GridLayout
放入
Item
中在这里完全没有意义。另一点是,您应该使用布局附件属性指定网格的元素大小,如
Layout.preferredWidth
,而不是width/height.Hi,谢谢您的回答。我删除了该项并使用Layout.preferredWidth/Height。不幸的是,它改变不了什么。我右边的元素仍然没有对齐。你也应该更新你的代码示例。是的,对不起。完成了。好的,现在你能解释一下“我的右元素没有正确对齐”是什么意思吗?目前根本没有对齐。你想归档什么?一些素描会很棒的。太好了!非常感谢!:)