Merkwürdiges paintEvent()?!
Verfasst: 9. Juli 2006 15:48
Ich habe zwei kleine Fragen. Zur ersten: mich verwirrt die paintEvent(QPaintEvent * ) -Funktion. Wird diese Funktion von jeder auf QWidget basierenden Klasse immer automatisch aufgerufen? Da ja wie von Geisterhand und ohne connect diese Funktion und damit der Text gezeichnet wird.
Meine zweite Frage beschäftigt sich mit
QPainter painter(this);
painter.drawText(100, 200, tr("hallo") );
Warum wird der Text nur in der paintEvent-Funktion gezeichnet und nicht wenn man Funktionskörper in den Kontruktor packt? Müsste doch das Selbe sein?!
Meine zweite Frage beschäftigt sich mit
QPainter painter(this);
painter.drawText(100, 200, tr("hallo") );
Warum wird der Text nur in der paintEvent-Funktion gezeichnet und nicht wenn man Funktionskörper in den Kontruktor packt? Müsste doch das Selbe sein?!
Code: Alles auswählen
CannonField::CannonField(QWidget *parent)
: QWidget(parent)
{
currentAngle = 45;
setPalette(QPalette(QColor(250, 250, 200)));
setAutoFillBackground(true);
QPainter painter(this);
painter.drawText(100, 200, tr("hallo") );
}
void CannonField::setAngle(int angle)
{
if (angle < 5)
angle = 5;
if (angle > 70)
angle = 70;
if (currentAngle == angle)
return;
currentAngle = angle;
update();
emit angleChanged(currentAngle);
}
void CannonField::paintEvent(QPaintEvent * )
{
QPainter painter(this);
painter.drawText(200, 200, tr("Angle = ") + QString::number(currentAngle));
}