动态创建网格布局并在Qt

时间:2017-05-27 23:54:15

标签: c++ qt grid qml qgridlayout

我是Qt的新手,目前我遇到了一些麻烦。我想从c ++代码在Qt中创建一个网格布局,并能够从那里进行管理。我尝试了很多不同的东西,但都没有。

基本上,我想做的是有一个带有按钮的窗口(完成),按下按钮,窗口应该变成一个按钮网格,没有固定数量的行或列。 (希望我明白我想做什么)

此时,我创建了两个.qml,一个qml文件包含第一个窗口的代码(一个只有一个按钮),另一个qml文件的网格布局中没有任何内容。还有两个c ++文件,第一个是main.cpp,第二个是我写的代码点击按钮“填充”网格的代码。

同样,我是Qt的新手,所以如果你有任何更好的想法,请告诉我!

1 个答案:

答案 0 :(得分:1)

您可以使用Repeater创建一些Button作为Grid的子项。 Grid会自动设置Button的位置,因此您不应设置任何anchors或坐标。

要处理信号,您可以在某处定义一个信号,然后连接到按钮信号。

Grid {
    id: buttonGrid
    signal buttonClicked(int index)
    Repeater {
        model: 100 // or any integer number
        delegate: Button {
            onClicked: buttonGrid.buttonClicked(index)
        }
    }
}

您也可以使用ListModel或任何QAbstractItemModel - 后代,而不是使用整数模型。然后你也可以使用他们的角色来获得像textes或颜色或函数......

也可以使用带有textes的简单数组。