C++ 在QDialog中使用QGridLayout定位QPushButton?

C++ 在QDialog中使用QGridLayout定位QPushButton?,c++,qt,C++,Qt,我试图在一个简单的应用程序中定位一个QPushButton。我想做的是让一个按钮居中并位于应用程序的底部 我不想使用designer,因此请不要建议(出于我自己的好奇心)。以下是我的代码: QGridLayout* layout = new QGridLayout; QPushButton* button1 = new QPushButton("button1"); centralWidget->setLayout(layout); qDebug() << "columns:"

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

我不想使用designer,因此请不要建议(出于我自己的好奇心)。以下是我的代码:

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);
QGridLayout*layout=新的QGridLayout;
QPushButton*button1=新的QPushButton(“button1”);
centralWidget->setLayout(布局);
qDebug()addWidget(按钮1,2,0,1,1,Qt::AlignCenter);
所以,这里有几件事我很好奇

首先,当我执行一个
columnCount()
和一个
rowCount()
时,每一个都返回
1
。如果我要在网格中设置按钮的行和列位置,我显然不想要1x1网格。我如何改变这个

第二,如果我想要一个空行怎么办?我必须用垫片吗

提前谢谢

首先,当我执行columnCount()和rowCount()时,它会返回 每人1个。如果我要设置 网格中的按钮,我显然不想要1x1网格。 我如何改变这个

如果网格的大小只有1 x 1,那么将小部件添加到网格中的位置(比如:row=20 column=20)没有问题。它只是创建一个空单元格(大小为零)来填充未使用的行和列

第二,如果我想要一个空行怎么办?我必须使用间隔垫圈吗 那个

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

首先,当我执行columnCount()和rowCount()时,它会返回 每人1个。如果我要设置 网格中的按钮,我显然不想要1x1网格。 我如何改变这个

如果网格的大小只有1 x 1,那么将小部件添加到网格中的位置(比如:row=20 column=20)没有问题。它只是创建一个空单元格(大小为零)来填充未使用的行和列

第二,如果我想要一个空行怎么办?我必须使用间隔垫圈吗 那个

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

首先,当我执行columnCount()和rowCount()时,每个间隔符返回1。如果我要在网格中设置按钮的行和列位置,我显然不想要1x1网格。我如何改变这个

是,可以修复此问题以将QSpacerItem添加到第0行和第1行

第二,如果我想要一个空行怎么办?我必须用垫片吗

是的,您可以使用QSpacerItem。首先,当我执行columnCount()和rowCount()时,返回的结果是每个值1。如果我要在网格中设置按钮的行和列位置,我显然不想要1x1网格。我如何改变这个

是,可以修复此问题以将QSpacerItem添加到第0行和第1行

第二,如果我想要一个空行怎么办?我必须用垫片吗


是的,您可以使用QSpacerItem。您不喜欢使用designer,但您仍然可以使用它来查看它产生了什么!我的意思是,如果你知道怎么做,你可以在那里设置你心目中的视图,然后检查
uic
生成的代码,看看你自己怎么做如何查看
uic
文件?我可以查看它的
.ui
文件,但它是XML格式的,不太适合查看。构建项目后,它旁边将有一个uifilename\u ui.h文件。查看该文件。您不喜欢使用designer,但仍然可以使用它来查看它产生了什么!我的意思是,如果你知道怎么做,你可以在那里设置你心目中的视图,然后检查
uic
生成的代码,看看你自己怎么做如何查看
uic
文件?我可以查看它的
.ui
文件,但它是XML格式的,不太适合查看。构建项目后,它旁边将有一个uifilename\u ui.h文件。看那个文件。