In meinem Programm benutze ich einen QPainter, der in einem QFrame zeichnen soll. Gibt es eine Möglichkeit, wie man diesem QPainter sagen kann, dass er den ihm zur Verfügung stehen Raum (sprich der Platz im QFrame) richtig nutzt?
Bei mir tritt folgendes Problem auf:
Wenn ich den Painter skaliere (mit QPainter::scale(int sx, int sy)) dann fasst dieser die angegebenen Koordinaten sx und sy anscheinend als Pixel auf. Man sieht dann beim Vergrößern des QFrames, dass der Painter in einem Bereich zeichnet, den man gar nicht gesehen hat als der QFrame noch kleiner war.
Muss ich den Viewport verändern? In der Doku steht nämlich, dass dieser standardmäßig auf den QPaintDevice (bei mir also auf den QFrame) eingestellt ist.
Der Code in meiner von QFrame abgeleiteten Klasse sieht wie folgt aus:
Code: Alles auswählen
QPainter painter;
QMatrix matrix;
matrix.scale( fieldSize, max );
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen( QPen(Qt::blue, 1) );
painter.begin( this );
painter.setMatrix( matrix );
for ( unsigned long x = 0; x < fieldSize; x++ )
{
painter.drawPoint( x, data[x] );
}
painter.end();