首页 > 解决方案 > C++:QGridLayout - 小部件之间的空白

问题描述

我目前有一个 QGridLayout 的问题。

在此处输入图像描述

每个方块都是一个小部件,我有一个这样的循环

for(int i = 0; i < 100; i++;)
{
   ui->layout->addWidget(new Square(this),rowNr,colNr);
}

QGridLayout 是 QFrame 的一部分。

我的问题是:为什么每个正方形之间有这么多空白(水平)

这是正方形的代码

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(QBrush("#c56c00"));
painter.drawRect(0, 0, 30, 30);

我的问题在哪里?我想让每个单元格 1 接 1 的在它们之间没有任何空间。我不知道为什么它是垂直正确的。我对 C++ 和 Qt 完全陌生。

标签: c++qt

解决方案


试试看:

#include "mainwindow.h"
#include <QGridLayout>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        resize(800, 800);

        auto widget = new QWidget(this);
        setCentralWidget(widget);

        auto gl = new QGridLayout(widget);
        gl->setSpacing(0);
        gl->setAlignment(Qt::AlignTop | Qt::AlignLeft);
        widget->setLayout(gl);

        for (int i = 0; i < 10; i++)
        for (int j = 0; j < 10; j++)
            gl->addWidget(new QPushButton(QString::number(i*10 + j), this), i, j);
    }

推荐阅读