我正在尝试在Qt中编写战舰实现,并使用两个QGridLayout来包含用于表示玩家网格的QToolButton。顶层布局(QMainWindows)是一个QHBoxLayout。我想要实现的是删除这些按钮之间的间距。目前它看起来像这样:
它绝对不好看。我通过以下方式向这些布局添加项目:
![Grid](https://istack.dev59.com/rmbSq.webp)
QIcon icon;
icon.addFile(QStringLiteral(":/images/Resources/field_blue.png"), QSize(), QIcon::Normal, QIcon::Off);
for (int i = 0; i < dimensions; ++i)
{
for (int j = 0; j < dimensions; ++j)
{
QToolButton* buttonLeft = new QToolButton(this);
buttonLeft->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
buttonLeft->setText(QString::number(i) + "-" + QString::number(j));
buttonLeft->setFixedSize(FIELD_ICON_SIZE + 10, FIELD_ICON_SIZE + 10); // FIELD_ICON_SIZE -> 20
buttonLeft->setIcon(icon);
buttonLeft->setIconSize(QSize(FIELD_ICON_SIZE, FIELD_ICON_SIZE));
buttonLeft->setAutoRaise(true);
QToolButton* buttonRight = new QToolButton(this);
buttonRight->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
buttonRight->setText(QString::number(i) + "-" + QString::number(j));
buttonRight->setFixedSize(FIELD_ICON_SIZE + 10, FIELD_ICON_SIZE + 10);
buttonRight->setIcon(icon);
buttonRight->setIconSize(QSize(FIELD_ICON_SIZE, FIELD_ICON_SIZE));
buttonRight->setAutoRaise(true);
_ui.gridLayoutLeft->addWidget(buttonLeft, i, j);
_ui.gridLayoutRight->addWidget(buttonRight, i, j);
}
}
我可以尝试使用间隔符,但它们会留下空白区域,这也是不可取的。