Caius Aérobus
31st December 2007, 11:48
I have probably (surely?) made a mistake somewhere but...impossible to find it out! Could you help please?
class CircleParameter : public QWidget
{
Q_OBJECT
public:
CircleParameter(QWidget *parent=0);
virtual ~CircleParameter() {};
public slots:
void setRadius(int radius);
protected:
void paintEvent(QPaintEvent *e);
private:
int radius;
};
CircleParameter::CircleParameter(QWidget *parent)
: QWidget(parent)
{
printf("creating widget\n");
this->radius = DEFAULT_RADIUS;
this->resize(MAX_RADIUS*2, MAX_RADIUS*2);
if (updatesEnabled()) printf("yes\n"); else printf("no\n");
if (isVisible()) printf("yes\n"); else printf("no\n");
}
void
CircleParameter::setRadius(int radius)
{
printf("setRadius()\n");
if (updatesEnabled()) printf("yes\n"); else printf("no\n");
if (isVisible()) printf("yes\n"); else printf("no\n");
this->radius = radius>0 ? radius<=MAX_RADIUS ? radius : MAX_RADIUS : 1;
this->update();
}
void
CircleParameter::paintEvent(QPaintEvent *e)
{
printf("paintEvent()\n");
QPainter painter(this);
QPen pen;
pen.setColor(Qt::red);
painter.setPen(pen);
painter.drawEllipse(this->size().width()/2-this->radius, this->size().height()/2-this->radius, radius*2, radius*2);
}
Outputs:
- at creation time:
creating widget
yes
no
- when moving a slider connected to CircleParameter::setRadius():
setRadius()
yes
yes
Issue: why CircleParameter:: paintEvent() never executed?
class CircleParameter : public QWidget
{
Q_OBJECT
public:
CircleParameter(QWidget *parent=0);
virtual ~CircleParameter() {};
public slots:
void setRadius(int radius);
protected:
void paintEvent(QPaintEvent *e);
private:
int radius;
};
CircleParameter::CircleParameter(QWidget *parent)
: QWidget(parent)
{
printf("creating widget\n");
this->radius = DEFAULT_RADIUS;
this->resize(MAX_RADIUS*2, MAX_RADIUS*2);
if (updatesEnabled()) printf("yes\n"); else printf("no\n");
if (isVisible()) printf("yes\n"); else printf("no\n");
}
void
CircleParameter::setRadius(int radius)
{
printf("setRadius()\n");
if (updatesEnabled()) printf("yes\n"); else printf("no\n");
if (isVisible()) printf("yes\n"); else printf("no\n");
this->radius = radius>0 ? radius<=MAX_RADIUS ? radius : MAX_RADIUS : 1;
this->update();
}
void
CircleParameter::paintEvent(QPaintEvent *e)
{
printf("paintEvent()\n");
QPainter painter(this);
QPen pen;
pen.setColor(Qt::red);
painter.setPen(pen);
painter.drawEllipse(this->size().width()/2-this->radius, this->size().height()/2-this->radius, radius*2, radius*2);
}
Outputs:
- at creation time:
creating widget
yes
no
- when moving a slider connected to CircleParameter::setRadius():
setRadius()
yes
yes
Issue: why CircleParameter:: paintEvent() never executed?