[Kde-devel-es] Una duda sobre QPainter

Pablo de Vicente kde-devel-es@mail.kde.org
Tue, 24 Dec 2002 16:19:45 +0100


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola a todos,

  Ya sé que hoy no es un día muy adecuado para andar pensando en programación 
y demás pero bueno, yo hago la pregunta por si hay alguien al otro lado y 
sabe y quiere contestar.

 He creado un KDialogBase que contiene un TabWidget en la parte inferior y en 
la que quiero situar un lienzo en la superior, donde pintar algunas cosas 
(supongamos por ejemplo una línea de prueba). El problema es que no comprendo 
bien como funciona QPainter y no consigo pintar nada.

  Lo he intentado de dos modos distintos, pero ninguno me funciona. QPainter 
puede pintar sobre un QWidget o sobre un QPixmap.  He probado lo siguiente:

1)  Sobre un QPixmap:

       .....
       QWidget * eltsView = new QWidget(eltsTotalBox);
       QPixmap bm( 540, 360 );
       bm.fill( eltsView,0,0 );

       QPainter paint;
       paint.begin(&bm,eltsView);
       paint.setBrush( color1 );
       paint.setPen( color1 );
       paint.setWindow(0,0,520,360);
       paint.drawLine(10,10,400,400);
       paint.end();

       bitBlt( eltsView, 0, 0 , &bm );
       ....

       y luego en algún momento posterior coloco los widgets en el layout:
       ....
        eltsTotalBoxLayout->addSpacing( 10 );
        eltsTotalBoxLayout->addWidget( eltsView );
        eltsTotalBoxLayout->addWidget( ctlTabs );
       ....
      
       El lienzo sale pero la línea desde (10,10) a (400,400) no aparece.

2)    También se puede pintar directamente sobre el widget:

         .....
        QWidget * eltsView = new QWidget(eltsTotalBox);
    
        QPainter paint;
        paint.begin(eltsView);
        paint.setBrush( color1 );
        paint.setPen( color1 );
        paint.setWindow(0,0,520,360);
        paint.drawLine(10,10, 200,200);
        paint.end()
      ....
        eltsTotalBoxLayout->addSpacing( 10 );
        eltsTotalBoxLayout->addWidget( eltsView );
        eltsTotalBoxLayout->addWidget( ctlTabs );
       ....

  ¿Alguien me puede iluminar?
  Gracias por adelantado y feliz navidad.

 Pablo de Vicente.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+CHsbSItUpHl6kJERAvScAKD01pZUW7krC3IzqvXi1WDLugSisACg/nah
BO1VMyiGJPr24UA9uBNcsuA=
=2fbU
-----END PGP SIGNATURE-----