我想在QFormLayout
中强制扩大空间,但是无论哪种QFormLayout
仅使用QSpaceItem::sizeHint()
。有谁知道解决这个问题的方法,或者解决这个问题的正确方法?
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
SetupLayout();
}
void MyWidget::SetupLayout()
{
QFormLayout * layout = new QFormLayout();
layout->addRow("Something1", new QComboBox());
layout->addRow("Something2", new QSpinBox());
//Spacer
layout->addItem(new QSpacerItem(0,10, QSizePolicy::Expanding, QSizePolicy::Expanding));
layout->addRow(QPushButton("Something3"));
setLayout(layout);
}
最佳答案
经过大量的手动和尝试的尝试,我想使用QFormLayout做您想做的事情是不可能的。
此布局是为具有很多要填充的字段的窗口而设计的,但仅此而已。
如果要在表单的各个部分之间添加更大的间距,则可以使用QVBoxLayout及其内部的几个QFormLayout(以间距分隔)。
请注意,在这种情况下,每个部分的第一列和第二列都将具有自己的宽度,因此这也许不是最佳解决方案。
另一个解决方案(如果我们正在谈论对某些选项进行分组的话)是使用其中带有QFormLayouts的两个QGroupBoxes。各个组将不会因间距的增加而分开,但将非常容易阅读,您可以为组命名。如果您要分组选项-这可能是最常见且用户友好的方式。
如果只希望获得所指向的视觉效果-每节中的宽度相同且各节之间的间距越来越大,则可以将QGridLayout与2列一起使用,并在各节之间的行中添加间隔符。在这种情况下,您必须创建QLabel才能自己将其放入第一列。