【问题标题】:how to add qspaceritem to qgridlayout如何将 qspaceritem 添加到 qgridlayout
【发布时间】: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

标签: c++ qt layout


【解决方案1】:

注意:候选函数不可行:至少需要 3 个参数,但提供了 1 个

你必须使用这个公共重载来添加间隔符

void addItem(QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0)

因此您需要指定分隔符的行和列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2023-03-18
    • 2010-12-11
    • 1970-01-01
    • 2018-05-03
    • 2018-12-26
    相关资源
    最近更新 更多