Qt4 - ersatz für bitBlk

Alles rund um die Programmierung mit Qt
Antworten
muffmolch
Beiträge: 2
Registriert: 8. Juli 2005 18:19

Qt4 - ersatz für bitBlk

Beitrag von muffmolch »

folgendes problem.
in Qt4 gibt es keine bitBlk() methode mehr. in einem Qt Quaterly wurde mal beschrieben, wie man mit hilfe von pixmaps double buffering bewerkstelligen kann. eigentlich ziemlich leicht. man zeichnet erst alles auf eine pixmap und kopiert diese dann mit bitBlk() direkt in den bildschirm puffer.
soweit so gut. dann kam Qt4 und bitBlk() gibt es nicht mehr oder ist nur über umwege, die ich nicht gehen möchte zu reaktivieren.
ich habe dieses "buffering" so verwendet, dass ich mir z.B. bei der auswahl des zoom bereichs durch "aufziehen" eines rechtecks zuvor den momentanen bildschirminhalt in einer pixmap speichere, das rechteck lediglich auf ner kopie dieser pixmap zeichne und die neue pixmap mit bitBlk() in den grafikpuffer schiebe.
während dieser zeit ist die updateFunktion meines fensters deaktiviert!!!

hier das abgespekte beispiel in Qt3:
class MyWidget : Qwidget
{
...
void paintEvent(QPaintEvent* e){...}
void mousePressEvent( QMouseEvent *e )
{
...
this->setUpdatesEnabled(false);
QPixmap pixmap(this->rect().size());
mPixmap= new QPixmap( r.size() );
bitBlt( mPixmap, rect.x() , rect.y() , this );
...
}
void mouseMoveEvent( QMouseEvent *e )
{
...
QPixmap pixmap(mPixmap);
QPainter paint(&pmap);
paint.drawRect(tmpMouseX1,tmpMouseX2,e->x()-tmpMouseX1,e->y()-tmpMouseX2);
bitBlt( this, rect.x() , rect.y() , &pixmap);
paint.setPen(pen);
...
}
void mouseReleaseEvent(QMouseEvent* e)
{
...
this->setUpdatesEnabled(true);
update();
...
}
...
Qpixmap mPixmap;
}

in Qt4 habe ih dann sowas ausprobiert:

void foo(){
...
this->setUpdatesEnabled(false);
QPainter painter(this);
painter.drawPixmap(mPixmap);
painter.end();
...
}

aber das haut leider auch hinten und vorne nicht hint, da die ansicht scheinbar nicht aktualisiert wird, solange setUpdatesEnabled auf false ist..


weiß einer von euch evtl rat? oder hat ne andere coole idee???
Antworten