我有下面的代码片段:了QWidget :: resizeEvent()的一个子子不叫
class A : public QWidget
{
Q_OBJECT
public:
A(QWidget *parent = 0);
void
setGeometry(int x, int y, int w, int h);
protected:
virtual void
resizeEvent(QResizeEvent *event);
}
class B : public A
{
Q_OBJECT
public:
B(A*parent = 0);
void
setGeometry(int x, int y, int w, int h);
protected:
virtual void
resizeEvent(QResizeEvent *event);
}
void
A::setGeometry(int x, int y, int w, int h)
{
QWidget::setGeometry(x, y, w, h);
}
void
A::resizeEvent(QResizeEvent * event)
{
QWidget::resizeEvent(event);
// common A and B stuff
}
void
B::setGeometry(int x, int y, int w, int h)
{
A::setGeometry(x, y, w, h);
}
void
B::resizeEvent(QResizeEvent * event)
{
A::resizeEvent(event);
}
调用上的A
实例setGeometry
将火resizeEvent()
。在B的实例上调用setGeometry
不会触发resizeEvent()
。这有什么不对吗?
编辑: 我可以在setGeometry
里面做同样的计算。现在,我只是好奇心。
是否执行B :: resizeEvent()调用A :: resizeEvent()? – 2012-07-30 07:52:54
是在执行B :: resizeEvent()时,我调用了A :: resizeEvent().B :: resizeEvent()没有被触发。根据文档调用B :: setGeometry()时,它应该被触发。 – Blackbelt 2012-07-30 07:58:09