Если я вас правильно понимаю, вы можете просто выполнить проверку здесь, например if (x,y in range) do_something
.
Другим способом было бы создать поддельный виджет с размерами 400x400 и переопределить это событие мыши.
Третий (вероятно, излишний) должен использовать фильтры событий (см. здесь ).
Обновление:
Вы не можете просто "легко" обрабатывать события мыши, используя Qt Designer.Каждая .ui
схема почти всегда связана с соответствующей реализацией для этой схемы.Вот где ваша обработка должна быть сделана.
Qt Designer отлично подходит для автоматической обработки слотов сигналов, но mouseMoveEvent
- это event
и не имеет ничего общего с системой слотов.
Я бы сказал, как бы это реализовать, и вы можете выбрать (см. Три возможных способа ранее).
Я бы создал DummyWidget
, который имел бы размеры 400x400 и пользовательскиевиртуальный mouseMoveEvent
метод, который фактически обрабатывает движение мыши.
В конструкторе моего главного окна (который также выполняет конструкцию .ui-based
) я бы сказал что-то вроде
dummy_widget_ = new DummyWidget(...);
// `dummy_widget_` is a private `DummyWidget*` member of the main window
и затем, вероятно, переместит его куда-нибудь .
Вот и все - теперь, когда мое главное окно создано, к нему добавляется фиктивный виджет и обрабатывается каждое движение мыши в этом виджете (потому чтомы предоставили пользовательскую реализацию).
Еще один момент, связанный только с событиями мыши: http://doc.qt.nokia.com/4.7/qwidget.html#mouseTracking-prop