我有下面的代碼片段:了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