[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-----