# 3.4. 扩展Widget类

第五课的目标是扩展widget类。因而，你会学到有关虚拟函数的知识。在这里`resizeEvent()`被重 写。另一个需要重点学习的是（除了如何扩展类）Qt使用虚函数来处理用户事件，而把事件本身作为 参数。因此，你必须熟悉以下的Qt类：

- QEvent

- QChildEvent

- QCloseEvent

- QFocusEvent

- QKeyEvent

- QMouseEvent

- QMoveEvent

- QPaintEvent

- QResizeEvent

- QTimerEvent

无论何时写自己的widget，特别是应用程序的可视区域，你都得自己重写那些需要处理的widget事件方 法，以替代缺省的实现。例如：

`virtual void mousePressEvent ( QMouseEvent *)`处理鼠标事件。在实现时，你必须在函数头中 输入一个参数名，大多数程序员用`event`或者干脆用`e`作为参数名。

然后你就可以处理事件参数了。对`QMouseEvent`而言，你可以知道引发该事件的按钮是左键，中键 或者右键。