好的,以下是完整代码:
#include <QtWidgets>
class MyWidget : public QGraphicsView
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
private:
QGraphicsScene *scene;
QGraphicsGridLayout *layout;
};
MyWidget::MyWidget(QWidget *parent)
: QGraphicsView(parent)
{
// 创建场景和布局
scene = new QGraphicsScene(this);
setScene(scene);
layout = new QGraphicsGridLayout();
// 添加图形项到场景中
for(int i=0; i<100; ++i) {
auto item = new QGraphicsRectItem(QRectF(0, 0, 50, 50));
item->setPos(i%4*60, i/4*60); // 设置每个图形项的位置
scene->addItem(item);
// 将图形项添加到布局中
layout->addItem(item, i/4, i%4);
}
// 设置布局大小,使其适合所有项目。
layout->activate();
// 将布局设置为根项
auto rootItem = new QGraphicsWidget();
rootItem->setLayout(layout);
scene->addItem(rootItem);
// 调整视口以适应内容
fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
在主函数中创建一个MyWidget对象并显示它。现在您可以编译和运行代码,并应该能够看到一个滚动的四列图形项网格。