1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/****************************************************************
**
** Implementation CannonField class, TQt tutorial 10
**
****************************************************************/
#include "cannon.h"
#include <ntqpainter.h>
#include <ntqpixmap.h>
CannonField::CannonField( TQWidget *parent, const char *name )
: TQWidget( parent, name )
{
ang = 45;
f = 0;
setPalette( TQPalette( TQColor( 250, 250, 200) ) );
}
void CannonField::setAngle( int degrees )
{
if ( degrees < 5 )
degrees = 5;
if ( degrees > 70 )
degrees = 70;
if ( ang == degrees )
return;
ang = degrees;
repaint( cannonRect(), FALSE );
emit angleChanged( ang );
}
void CannonField::setForce( int newton )
{
if ( newton < 0 )
newton = 0;
if ( f == newton )
return;
f = newton;
emit forceChanged( f );
}
void CannonField::paintEvent( TQPaintEvent *e )
{
if ( !e->rect().intersects( cannonRect() ) )
return;
TQRect cr = cannonRect();
TQPixmap pix( cr.size() );
pix.fill( this, cr.topLeft() );
TQPainter p( &pix );
p.setBrush( blue );
p.setPen( NoPen );
p.translate( 0, pix.height() - 1 );
p.drawPie( TQRect( -35,-35, 70, 70 ), 0, 90*16 );
p.rotate( -ang );
p.drawRect( TQRect(33, -4, 15, 8) );
p.end();
p.begin( this );
p.drawPixmap( cr.topLeft(), pix );
}
TQRect CannonField::cannonRect() const
{
TQRect r( 0, 0, 50, 50 );
r.moveBottomLeft( rect().bottomLeft() );
return r;
}
TQSizePolicy CannonField::sizePolicy() const
{
return TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Expanding );
}
|