[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_content.php on line 1014: Undefined array key 3
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_content.php on line 1014: Undefined array key 3
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_content.php on line 1014: Undefined array key 3
qtforum.de • WQidget: Arbeitsfläche 'leeren'
Seite 1 von 1

WQidget: Arbeitsfläche 'leeren'

Verfasst: 25. April 2008 14:28
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!

Verfasst: 25. April 2008 15:19
von Christian81
Du willst also alle children löschen? Dann geh einfach alle children durch und lösche sie :)

Verfasst: 25. April 2008 16:43
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;
...}

Verfasst: 25. April 2008 16:43
von PeterLustig
rubberBand->hide()... Oder lösch es.

Verfasst: 25. April 2008 17:28
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();

Verfasst: 25. April 2008 17:41
von PeterLustig
Den C++ Befehl "delete"???