我手动创建了两个包含很多项目的分组框。一个分组框中的项目比第二个分组框中的项目多,这是一个布局问题。查看图片:
我测试了将垂直间隔符插入“模拟”部分,但是没有成功。
代码段是:
...
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添加到“模拟”组框中... 你能帮我吗?
答案 0 :(得分:1)
注意:候选函数不可行:至少需要3个参数,但提供了1个
您必须使用此公共重载来添加间隔符
void addItem(QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0)
所以您需要指定间隔的行和列。