0

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

基本上,我想要做的是有一个带有按钮的窗口(完成),并且通过按下按钮,窗口应该变成一个没有固定行数或列数的按钮网格。(希望我清楚我想做什么)

此时,我创建了两个 .qml ,一个 qml 文件具有第一个窗口的代码(具有唯一按钮的那个),另一个 qml 文件具有网格布局,其中没有任何内容。还有两个 c++ 文件,第一个是 main.cpp,第二个是我正在编写的代码,用于在单击按钮时“填充”网格。

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

4

1 回答 1

1

您可以使用 aRepeater创建一定数量的Buttons 作为 的子级Grid。将Grid自动设置Buttons 的位置,因此您不应设置任何anchors或坐标。

为了处理信号,你在某处定义一个信号,然后你连接到按钮信号。

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

除了使用整数模型,您还可以使用例如 aListModel或任何QAbstractItemModel-descendent。然后,您还可以使用它们的角色,获取诸如文本、颜色或功能之类的东西……

一个带有文本的简单数组也是可能的。

于 2017-05-31T06:22:05.690 回答