在QDialog中使用QGridLayout定位QPushButton?

时间:2016-02-17 02:40:28

标签: c++ qt

我正在尝试将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网格。我该如何改变?

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

  

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

将小部件添加到网格中的位置没有问题,例如: row = 20 column = 20 ,如果网格&#39 ; s大小仅 1 x 1 。它只是创建一个空单元格(大小),填充未使用的行和列。

  

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

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

答案 1 :(得分:0)

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

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

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

是的,您可以使用QSpacerItem。