0

我想减少标签和 QLineEdit 之间的空间(QLabel 在 QLineEdit 之上)。我怎样才能实现它?在我创建项目的代码中,我稍后将其放入一些布局中。

QLabel* lgamma = new QLabel("Gamma");
gamma = new QLineEdit();
QLabel* lmin_linie = new QLabel(QString::fromUtf8("Min. il. zmian linii"));
min_lin = new QLineEdit();
// ...
QLabel* lmax_kursy = new QLabel(QString::fromUtf8("Max zm. il. kursów"));
max_kursy = new QLineEdit();
QGridLayout *lay = new QGridLayout(this);
QVBoxLayout *box1 = new QVBoxLayout();
QVBoxLayout *box2 = new QVBoxLayout();
// ...
QVBoxLayout *box12 = new QVBoxLayout();
box1->addWidget(lmin_linie);
box1->addWidget(min_lin);
box2->addWidget(lmax_lin);
box2->addWidget(max_lin);
// ...
box12->addWidget(literacje);
box12->addWidget(iteracje);
verticalColumn1->addLayout(box1);
verticalColumn1->addLayout(box2);
// ...
verticalColumn3->addLayout(box12);

start = new QPushButton("Start", this);
QHBoxLayout *corn = new QHBoxLayout();
corn->addLayout(verticalColumn1);
corn->addLayout(verticalColumn2);
corn->addLayout(verticalColumn3);
QVBoxLayout *rup = new QVBoxLayout();
rup->addLayout(corn);
rup->addWidget(start);

在此处输入图像描述

4

2 回答 2

5

您可以简单地在布局中添加一个垫片。

QSpacerItem *spacer = new QSpacerItem(1, 50, QSizePolicy::Ignored, QSizePolicy::Expanding);
box1.addItem(spacer); 

根据您的需要调整 args 或QSpacerItem,例如QSizePolicy::Preferred可能比 更好QSizePolicy::Expanding,并减少首选高度(第二个参数)。你为什么不使用简单的方法来使用 Qt 设计器来做那个 GUI?

于 2013-01-16T22:26:02.467 回答
1

您可以尝试设置 QLabel 和 QLineEdit 边框:

lmax_kursy->setStyleSheet("border-width:0px");
max_kursy->setStyleSheet("border-width:0px");

或在布局中设置间距。首先检查什么是间距的当前值:

box1->spacing();

如果为 0,请尝试设置负值,如 -2:

box1->setSpacing(-2);       // or 0 or something else
于 2013-01-16T22:22:53.680 回答