所有,我正在维护一个显示多项式系数的其中一个QGridLayout。QLabels我用 表示我的多项式QList<double>。
每次我更新我的系数时,我都会更新我的标签。更改列表大小时,我的方法效果不佳。  QGridLayout::rowCount()没有正确更新。我想知道是否有办法从 QGridLayout 中删除行。
代码如下,QGridLayout用更多(或更少)更新大小QLabels
int count = coefficients->count(); //coefficients is a QList<double> *
if(count != (m_informational->rowCount() - 1)) //m_information is a QGridLayout
{
    SetFitMethod(0);
    for(int i = 0; i < count; ++i)
    {
        QLabel * new_coeff = new QLabel(this);
        new_coeff->setAlignment(Qt::AlignRight);
        m_informational->addWidget(new_coeff, i+1, 0);
        QLabel * param = new QLabel(this);
        param->setAlignment(Qt::AlignLeft);
        param->setText(QString("<b><i>x</i><sup>%2</sup></b>").arg(count-i-1));
        m_informational->addWidget(param, i+1, 1);
        QSpacerItem * space = new QSpacerItem(0,0,QSizePolicy::Expanding);
        m_informational->addItem(space, i+1, 1);
    }
    m_informational->setColumnStretch(0, 3);
    m_informational->setColumnStretch(1, 1);
    m_informational->setColumnStretch(2, 1);
}
SetFitMethod(这是一个初始模型)
void SetFitMethod(int method)
{
    ClearInformational();
    switch(method)
    {
    case 0: //Polynomial fit
        QLabel * title = new QLabel(this);
        title->setText("<b> <u> Coefficients </u> </b>");
        title->setAlignment(Qt::AlignHCenter);
        m_informational->addWidget(title,0,0,1,3, Qt::AlignHCenter);
    }
}
清算方法:
void ClearInformational()
{
    while(m_informational->count())
    {
        QLayoutItem * cur_item = m_informational->takeAt(0);
        if(cur_item->widget())
            delete cur_item->widget();
        delete cur_item;
    }
}