WQidget: Arbeitsfläche 'leeren'

Alles rund um die Programmierung mit Qt
Antworten
Allroad
Beiträge: 61
Registriert: 23. Oktober 2007 10:19
Kontaktdaten:

WQidget: Arbeitsfläche 'leeren'

Beitrag von Allroad »

Gibt es eine Funktion die meine 'Arbeitsfläche' bereingt, sprich grafisch alles löscht was sich darin befindet? (so ähnlich wie z.B. QWidget::update()).. hab in der Doc nichts gefunden.
Meine 'Arbeitsfläche' ist wie folgt definiert...:

Code: Alles auswählen

class WorkSheet : public QWidget
{
    Q_OBJECT

public:
    WorkSheet(QWidget *parent = 0);
...
public slot:
    void clean();
...
private
QList<QPixmap> pixmaplist;
}
Auf der Arbeistfläche kommen verschiedene QPixmaps, aber auch QRubberBand.
Die Function clean() löscht mir schon alle QPixmaps, weil ich die auch speichere, QRubberBand aber nicht, und ich will da auch nichts speichern.
Deswegen suche ich jetzt eine Lösung wie ich die QRubberB. wieder löschen kann!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du willst also alle children löschen? Dann geh einfach alle children durch und lösche sie :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Allroad
Beiträge: 61
Registriert: 23. Oktober 2007 10:19
Kontaktdaten:

Beitrag von Allroad »

Wie soll dass den gehen?
Konkret sieht das bei mir so aus:

Code: Alles auswählen

void WorkSheet::mousePressEvent(QMouseEvent *event)
{     //rubberBand wird erstellt

       rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
       rubberBand->setGeometry(QRect(start, QSize(40,40)));
       rubberBand->show();
}

void WorkSheet::mouseMoveEvent(QMouseEvent *event)
{ //rubberBand wächst.....

rubberBand->setGeometry(QRect(start, event->pos()));
}

void WorkSheet::mouseReleaseEvent(QMouseEvent *event)
{ //rubberBand ist fertig...!

               rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
               rectSelect = QRect(QPoint(start),QPoint(end));
               rubberBand->setGeometry(rectSelect);
               rubberBand->show();
}
wie werde ich die RubberBand wieder los...?
ahja, hab vergessn zu sagen, rubberBand ist privat definiert :

Code: Alles auswählen

class WorkSheet : public QWidget
{
...
private:
QRubberBand *rubberBand;
...}
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

rubberBand->hide()... Oder lösch es.
Allroad
Beiträge: 61
Registriert: 23. Oktober 2007 10:19
Kontaktdaten:

Beitrag von Allroad »

Danke, hat geklappt, mit .hide(). Gibt es auch eine Funktion zum löschen (da es du schon angesprochen hast)? delete() oder remove() gibts nicht...
Hab es jetzt so gelöst:

Code: Alles auswählen

for(int i =0; i < rubberBands.size(); i++) //rubberBands = Liste von QRubberBand
                  {
                  std::cout<<"Hide";
                  rubberBands[i]->hide();
                  }

rubberBands.clear();
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Den C++ Befehl "delete"???
Antworten