Составители:
Рубрика:
77
Наконец, в исключительных случаях возможно работа с
сенсорным экраном на уровне его драйвера в ядре MeeGo. Это
наиболее сложный и трудоемкий способ и он имеет смысл только в
том случае, если у конкретной модели сенсорного экрана есть
какие-то необходимые нам возможности, которые не
поддерживаются Qt. Необходимо также учитывать проблемы с
переносимостью созданной таким образом программы.
Далее мы будем говорить о событиях сенсорного экрана. Для
перехвата событий необходимо применить традиционную для Qt
схему – создать свой собственный виджет, унаследовав его от
какого-нибудь стандартного, и в нем переопределить метод event():
bool MyWidget::event(QEvent *event) {
if (event->type() == QEvent::SomeEvent) {
QSomeEvent *e =
static_cast<QSomeEvent*>(event);
// ...
e->accept();
return true;
}
return BaseWidget::event(event);
}
В этом фрагменте кода важны четыре момента. Во-первых,
нужно выделить только те события, которые нам интересны, не
нужно пытаться обработать все события, которые получает виджет.
Для этого в начале мы проверяем тип события, в данном случае
QEvent::SomeEvent.
Во-вторых, сам по себе базовый класс событий QEvent
малоинформативен, после того, как мы определились с типом
события, надо привести его к соответствующему типу (в примере
QSomeEvent). В Qt для этого рекомендуется использовать
static_cast.
В-третьих, после обработки события его следует пометить как
обработанное с помощью метода accept() и возврата true.
В-четвертых, все события, которые не были обработаны в новом
обработчике, должны быть переданы обработчику базового класса.
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »
