Entfernen von QWidgets von einem QGridLayout

Ich habe eine QGridLayout wo ich mein custom QWidgets.

Wenn ich versuche zu löschen Sie alle von Ihnen, die Sie angeblich sind, entfernt aus dem layout (wie die Funktion layout.count() gibt 0 zurück), aber Sie sind immer noch im interface und ich kann mit Ihnen interagieren.

Hier haben Sie die Möglichkeit, die ich widgets hinzufügen:

void MyClass::addCustomWidget(CustomWidget *_widget, int r, int c)
{
    layout->addWidget(_widget, r, c);
    _widget->show();
}

Und hier die Art, wie ich diese löschen:

void MyClass::clearLayout()
{
    qDebug() << "Layout count before clearing it: " << layout->count();

    int count = layout->count();
    int colums = layout->columnCount();
    int rows = layout->rowCount();

    int i=0;
    for(int j=0; j<rows; j++)
    {
        for(int k=0; k<colums && i<count; k++)
        {
            i++;

            qDebug() << "Removing item at: " << j << "," << k;
            QLayoutItem* item = layout->itemAtPosition(j, k);

            if (!item) continue;

            if (item->widget()) {
                layout->removeWidget(item->widget());
            } else {
                layout->removeItem(item);
            }
            qDebug() << "Removed!";
        }
    }

    qDebug() << "Layout count after clearing it: " << layout->count();
}

Jede Art von Hilfe oder Tipp zum löschen von Elementen/widgets ordnungsgemäß von einem QGridLayout?

P. D. : ich habe im internet gesehen, dass eine Menge Leute löscht das widget direkt (löschen _widget) nach dem entfernen Sie Sie aus dem layout. In meinem Fall ist es nicht möglich, da muss ich mantain, dass die widgets im Speicher.

mögliche Duplikate von widgets Entfernen von QGridLayout

InformationsquelleAutor AZorrozua | 2012-05-23

Schreibe einen Kommentar