You're exactly right. I wasn't actually deleting them. When I realized this, I figured it out. Being new to c++, I'm evidently struggling with pointers. Here's my solution in case anyone else needs it.
void SurfCntrlParams
::confSurf_typeInputLayout(const QString & text
) {
std::vector<QComboBox*>::iterator it = surf_typeBoxVector->begin();
std::vector<QLabel*>::iterator it2 = surf_typeLabelVector->begin();
for(;it<(surf_typeBoxVector->end()); it++, it2++)
{
delete *it2;
delete *it;
}
surf_typeBoxVector->clear();
surf_typeLabelVector->clear();
int numOfSurfaces = text.toInt();
for(int i=1; i<=numOfSurfaces; i++)
{
char surfLabel [15];
sprintf(surfLabel, "Surface %d", i);
surf_typeBoxVector
->push_back
(new QComboBox());
(surf_typeBoxVector->back())->addItems(*surf_typeList);
surf_typeLabelVector
->push_back
(new QLabel(surfLabel
));
}
it = surf_typeBoxVector->begin();
it2 = surf_typeLabelVector->begin();
for(int row2=0;it<(surf_typeBoxVector->end()); row2++,it++, it2++)
{
surf_typeGrid->addWidget(*it2,row2,0);
surf_typeGrid->addWidget(*it,row2,1);
}
}
void SurfCntrlParams::confSurf_typeInputLayout(const QString & text)
{
std::vector<QComboBox*>::iterator it = surf_typeBoxVector->begin();
std::vector<QLabel*>::iterator it2 = surf_typeLabelVector->begin();
for(;it<(surf_typeBoxVector->end()); it++, it2++)
{
delete *it2;
delete *it;
}
surf_typeBoxVector->clear();
surf_typeLabelVector->clear();
int numOfSurfaces = text.toInt();
for(int i=1; i<=numOfSurfaces; i++)
{
char surfLabel [15];
sprintf(surfLabel, "Surface %d", i);
surf_typeBoxVector->push_back(new QComboBox());
(surf_typeBoxVector->back())->addItems(*surf_typeList);
surf_typeLabelVector->push_back(new QLabel(surfLabel));
}
it = surf_typeBoxVector->begin();
it2 = surf_typeLabelVector->begin();
for(int row2=0;it<(surf_typeBoxVector->end()); row2++,it++, it2++)
{
surf_typeGrid->addWidget(*it2,row2,0);
surf_typeGrid->addWidget(*it,row2,1);
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks