动态创建网格布局并在 Qt 中管理它
Create a Grid Layout Dynamically and manage it in Qt
我是 Qt 的新手,目前遇到了一些问题。我想从 C++ 代码在 Qt 中创建一个网格布局,并能够从那里管理它。我尝试了很多不同的东西,但 none 都有效。
基本上,我想要做的是在其中有一个带有按钮的 window(完成),然后按下按钮,window 应该变成一个按钮网格没有固定数量的行或列。 (希望我清楚我想做什么)
此时,我创建了两个 .qml,一个 qml 文件包含第一个 window(带有唯一按钮的那个)的代码,另一个 qml 文件具有网格布局什么都没有。还有两个 C++ 文件,第一个是 main.cpp,第二个是我在单击按钮时写入 "fill" 网格的代码。
同样,我是 Qt 的新手,所以如果您有更好的想法,请告诉我!
您可以使用 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
-descendent。然后你也可以使用他们的角色,来获得文本或颜色或功能之类的东西......
一个带有文本的简单数组也是可能的。
我是 Qt 的新手,目前遇到了一些问题。我想从 C++ 代码在 Qt 中创建一个网格布局,并能够从那里管理它。我尝试了很多不同的东西,但 none 都有效。
基本上,我想要做的是在其中有一个带有按钮的 window(完成),然后按下按钮,window 应该变成一个按钮网格没有固定数量的行或列。 (希望我清楚我想做什么)
此时,我创建了两个 .qml,一个 qml 文件包含第一个 window(带有唯一按钮的那个)的代码,另一个 qml 文件具有网格布局什么都没有。还有两个 C++ 文件,第一个是 main.cpp,第二个是我在单击按钮时写入 "fill" 网格的代码。
同样,我是 Qt 的新手,所以如果您有更好的想法,请告诉我!
您可以使用 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
-descendent。然后你也可以使用他们的角色,来获得文本或颜色或功能之类的东西......
一个带有文本的简单数组也是可能的。