【发布时间】:2019-11-13 11:12:18
【问题描述】:
我手动创建了两个包含许多项目的组框。一个组框中的项目比第二个多,这是一个布局问题。见图片:
我测试将垂直间隔插入“模拟”部分,但没有成功。
一段代码是:
...
groupBox2Layout = new QGridLayout;
groupBox2 = new QGroupBox();
groupBox2->setTitle("Analog");
for(int i=0; i<=15; i++)
{
QSlider *horizontalSlider = new QSlider(Qt::Orientation::Horizontal);
QComboBox *comboBox1 = new QComboBox();
comboBox1->addItems(analogPins);
QLineEdit *lineEdit1 = new QLineEdit("Slider " + QString::number(i));
groupBox2Layout->addWidget(horizontalSlider, i, 0);
groupBox2Layout->addWidget(comboBox1, i, 2);
groupBox2Layout->addWidget(lineEdit1, i, 3);
groupBox2->setLayout(groupBox2Layout);
}
groupBox2Spacer = new QSpacerItem(100,100, QSizePolicy::Expanding, QSizePolicy::Expanding);
groupBox2Layout->
...
我测试过
groupBox2Layout->addItem(groupBox2Spacer); 有错误: masim.cpp:60:22: 错误:'addItem' 是 'QGridLayout' 的受保护成员 qgridlayout.h:123:10:注意:在此处声明受保护
groupBox2Layout->addWidget(groupBox2Spacer); masim.cpp:60:22:错误:没有匹配的成员函数调用“addWidget” qgridlayout.h:102:17:注意:候选函数不可行:第一个参数没有从 'QSpacerItem *' 到 'QWidget *' 的已知转换 qgridlayout.h:103:10:注意:候选函数不可行:需要至少 3 个参数,但提供了 1 个 qgridlayout.h:104:10:注意:候选函数不可行:至少需要 5 个参数,但提供了 1 个
找不到其他方法如何将 Spacer 添加到“模拟”组框... 你能帮帮我吗?
【问题讨论】:
-
有
addStretch()和addStrut()方法,但它们可用于QBoxLayout。也许,你最好试试QVBoxLayout?在这种情况下,这些小部件对可以放入QHBoxLayout。