qt在主窗口.ui文件中有个QGraphicsView对象m_view,创建一个10行10列宽为30高为50的矩形,矩形之间的间隔30,并且第一个矩形和m_view对象相对坐标是(10,10)
时间: 2024-03-16 09:42:43 浏览: 86
您可以在Qt的主窗口类中,通过m_view对象的QGraphicsScene来创建这个图形场景中的矩形,并在m_view中显示。以下是一个示例代码:
```cpp
// 在主窗口类中的构造函数中添加以下代码
const int rows = 10;
const int cols = 10;
const int width = 30;
const int height = 50;
const int spacing = 30;
const int offsetX = 10;
const int offsetY = 10;
// 创建场景对象
QGraphicsScene* scene = new QGraphicsScene(this);
m_view->setScene(scene);
for (int row = 0; row < rows; ++row) {
for (int col = 0; col < cols; ++col) {
// 创建矩形项
QGraphicsRectItem* rectItem = new QGraphicsRectItem(col * (width + spacing) + offsetX, row * (height + spacing) + offsetY, width, height);
// 添加矩形项到场景中
scene->addItem(rectItem);
}
}
// 调整视图的大小
m_view->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio);
```
在上面的代码中,我们首先创建了一个QGraphicsScene对象,并将其设置为m_view对象的场景。然后,我们使用双重循环来创建一个10行10列的矩形。对于每个矩形,我们使用QGraphicsRectItem类创建一个矩形项,并指定其位置和大小。由于第一个矩形的相对坐标是(10,10),因此我们在计算矩形的位置时,需要加上offsetX和offsetY的偏移量。然后,我们将矩形项添加到场景中。
最后,我们调整了m_view的大小,以适应场景中所有项的大小,并保持它们的长宽比。这样,我们就可以在m_view中看到所有的矩形了。矩形之间的间隔可以通过spacing变量进行调整。
阅读全文