# 3.4. Расширение класса Widget

Теперь, в уроке 5 нашей целью будет расширение возможностей класса. Также вы узнаете о виртуальных функциях. Здесь переписывается метод `resizeEvent()`. Главное, что необходимо запомнить здесь (помимо расширения возможностей класса), это то, что Qt работает с пользовательскими событиями посредством виртуальных функций, которые принимают событие в качестве параметра. Поэтому вы должны ознакомиться со следующими классами библиотеки Qt:

- QEvent

- QChildEvent

- QCloseEvent

- QFocusEvent

- QKeyEvent

- QMouseEvent

- QMoveEvent

- QPaintEvent

- QResizeEvent

- QTimerEvent

Когда вы будете разрабатывать собственные визуальные элементы, особенно окна вывода приложений, вам придется переписывать методы обработки событий, наследуемые классами визуальных элементов по-умолчанию, заменяя обработку тех событий, которые вам нужно перехватить. Это может быть, например,

`virtual void mousePressEvent ( QMouseEvent * )` для обработки сигналов от мышки для вывода контекстного меню. При создании собственного обработчика, вам необходимо будет вставить формальный параметр в описание функции, большинство разработчиков используют `event` или `e` в качестве имени параметра.

Теперь вы сможете обрабатывать параметры события. Для `QMouseEvent` вам надо будет выяснить какая из кнопок, правая, средняя или левая, породила событие.