在QDialog中使用QGridLayout定位QPushButton

Positioning a QPushButton using QGridLayout in a QDialog?

本文关键字:QGridLayout 定位 QPushButton QDialog      更新时间:2023-10-16

我正在尝试在一个简单的应用程序中定位QPushButton。我想做的是将一个按钮居中并位于应用程序的底部。

我不想使用设计器,所以请不要建议(这是我自己的好奇心(。这是我的代码:

QGridLayout* layout = new QGridLayout;
QPushButton* button1 = new QPushButton("button1");
centralWidget->setLayout(layout);
qDebug() << "columns:";
qDebug() << layout->columnCount();
qDebug() << "rows:";
qDebug() << layout->rowCount();
button1->setFixedSize(100, 50);
layout->addWidget(button1,2,0,1,1,Qt::AlignCenter);

所以,这里有几件事我很好奇。

首先,当我做一个columnCount()和一个rowCount()时,它会为每个人返回1。如果我要设置按钮在网格中的行和列位置,我显然不想要 1x1 网格。如何更改此设置?

其次,如果我想要一个空行怎么办?我必须为此使用垫片吗?

提前谢谢。

首先,当我做一个columnCount((和一个rowCount((时,它返回 每个 1 个。如果我要设置行和列位置 网格中的按钮,我显然不想要 1x1 网格。 如何更改此设置?

小部件添加到位置上的网格中没有问题,假设:row=20 column=20,如果网格的大小只有 1 x 1它只是创建一个空单元格(大小为零(归档未使用的行和列。

其次,如果我想要一个空行怎么办?我必须使用垫片吗 那?

是的,如果你想要一个空行或一列,你必须把一个空格(QSpacerItem(或一个空的小部件(一个普通的QWidget(放入其中一个单元格中。如果您想要固定高度/宽度的行/列,则必须为此间隔条(或小部件(设置固定宽度或高度。

首先,当我做一个columnCount((和一个rowCount((时,它每个返回1。如果我要设置按钮在网格中的行和列位置,我显然不想要 1x1 网格。如何更改此设置?

是的,可以解决此问题以将 QSpacerItem 添加到第 0 行和第 1 行。

其次,如果我想要一个空行怎么办?我必须为此使用垫片吗?

是的,您可以使用QSpacerItem。