Идея такая: есть сцена. есть собственный виджет построенный в дизайнере. экземпляры этого виджета должны динамически создаваться(также добавляясь на сцену) и удаляться. всё это по требаванию пользователя!
Но вот такая штука они создаются,,, и показываются,,, ии удаляются если не в сцене!
стоит только добавить виджет в сцену и всё его хрен удалишь!
Причем хоть как хоть как:
ни тебе удаляя со сцены, и даже удаляя саму сцену, ни delete wgt, ни wgt.deleteLater()
отладчик не помогает
вот код:
void SSMain::getDevices()
{
// devicesList - это QList<DewiceWidget*>
// DeviceWidget - это сам виджет созданный в дизайнере содержащий в себе другие виджеты
if (devicesList.size() > 0) {
scene->clear();
delete scene;
for(int i = 0; i < devicesList.size(); i++) {
delete devicesList[i]; // удаляем каждый виджет
}
devicesList.clear(); // чистим список
}
scene = new QGraphicsScene(this);
ui->graphicsViewDevices->setScene(scene);
QString devsPath = QDir::currentPath() + "/Devices";
QDir dir(devsPath);
QStringList l = dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot);
foreach(QString str, l) {
QDir td(devsPath + "/" + str);
QStringList tsl = td.entryList(QStringList("*.ini"), QDir::Files);
foreach(QString xstr, tsl) {
QString tinifile = devsPath + "/" + str + "/" + xstr;
QSettings tsetfile(tinifile, QSettings::IniFormat);
if (!tsetfile.value("General/ThisFileDeviceInfo", false).toBool())
continue;
devicesList.append(new DeviceWidget());
//devicesList[devicesList.size() - 1]->setAttribute(Qt::WA_DeleteOnClose); // это я и так пытался сделать, а там выше делал devicesList[i].close;
scene->addWidget(devicesList[devicesList.size() - 1]); // вот если этого не делать то виджеты нормально удаляются из памяти <<<<<<<<<
devicesList[devicesList.size() - 1]->move(140 * (devicesList.size() - 1), 0);
}
}
}
на delete и возникает неуловимое исключение, только если эти виджеты в сцене, причём пока я их не пытаюсь удалить всё нормально.
(я уже подумываю так и осталять их в памяти )
Что не так то???
Помогите.