すべて、私はQGridLayout
のQLabels
を保持しており、多項式の係数を示しています。私はQList<double>
を使って私の多項式を表現しています。QGridLayoutから行を削除
私の係数を更新するたびに、ラベルを更新します。リストのサイズを変更すると、私のメソッドはではうまくいきません。 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;
}
}
可能重複(http://stackoverflow.com/questions/5395266/removing-widgets-from-qgridlayout) – emkey08