Qt - Löschen Sie alle widgets, die aus einem QWidget-layout

Ich habe eine QWidget in einen dialog. Im Laufe des Programms ausgeführt wird, werden mehrere QCheckBox * Objekte Hinzugefügt werden, um das layout so:

QCheckBox *c = new QCheckBox("Checkbox text");
ui->myWidget->layout()->addWidget(c);

Dies funktioniert gut für alle Checkboxen. Allerdings habe ich auch eine QPushButton als "klar" in meinem Dialogfeld, das, wenn Sie gedrückt wird, sollte leer alles aus myWidget, leer lassen, wie es war, bevor die QCheckboxes Hinzugefügt wurden. Ich habe auf der Suche rund um online und in den docs, aber ich habe Probleme bei der Suche nach einem Weg, dies zu tun. Ich fand diese Frage, die ich dachte, war ähnlich wie mein problem, und habe versucht, Ihre Lösung wie diese:

void myClass::on_clear_clicked()
{
  while(ui->myWidget->layout()->count() > 0)
  {
    QLayoutItem *item = ui->myWidget->layout()->takeAt(0);
    delete item;
  }
}

Dieser jedoch schien nicht, etwas zu tun. Es ist erwähnenswert, dass ich bin mir nicht sicher, ob dies ist übersetzt aus seiner Antwort richtig, es war ein bisschen unklar, wie die Funktion implementiert werden sollte, so machte ich also meine beste Vermutung. Wenn jemand weiß, was ich ändern kann, in den oben zu machen, damit es funktioniert (oder nur eine andere Möglichkeit, die funktionieren würde), wäre es sehr geschätzt werden.

InformationsquelleAutor thnkwthprtls | 2014-03-25
Schreibe einen Kommentar