Название: как передать eventFilter Отправлено: zloyGamer от Декабря 01, 2009, 04:25 как передать сообщение дочернему обьекту, например
bool quickSearch::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); if( obj == (QObject*)ui->lineEdit ) { if(keyEvent->key() == Qt::Key_Down || keyEvent->key() == Qt::Key_Up) { //ui->view->eventFilter(obj,event); //ui->view->eventFilter(ui->view,event); return 1; } } } return QMainWindow::eventFilter(obj,event); } надо чтобы во вьюшку поступили сигналы о нажатии клавиш вниз и вверх, и сработала стандартная обработка этих событий - т.е. переход на следующий, предыдущий элемент.. для ui->view никаких eventFilter'ов я непереопределял, как это можно сделать неполучая и проставляя текущие индексы? Название: Re: как передать eventFilter Отправлено: sendevent от Декабря 01, 2009, 05:29 eventFilter нужен для ровно наоборот - "когда во view пришло событие "нажатие кнопки" - мы в "фильтре событий" можем кастомизировать обработку" (типа WinAPI'шного hook'а), т.е. алгоритм примерно такой:
1: для view генерируется событие; 2: мы его перехватываем в другом классе; 2.а: если событие "искомое" - обрабатываем customized; иначе - 2.б; 2.б: оставляем обработку события адресату; Код: bool SomeParent::eventFilter( QObject *obj, QEvent *event ) Цитировать сигналы о нажатии клавиш <...> обработка этих событий будут выполнены без всякого вмешательства с eventFilter, если у вьюхи есть обработчики.Название: Re: как передать eventFilter Отправлено: zloyGamer от Декабря 01, 2009, 05:46 понятно что eventFilter нужен для кастомизации обработки событий, но как мне эти события передать во view (QListView) ?
Название: Re: как передать eventFilter Отправлено: sendevent от Декабря 01, 2009, 06:22 Код: bool CustomEventHandler::eventFilter( QObject *obj, QEvent *event ) Название: Re: как передать eventFilter Отправлено: sendevent от Декабря 01, 2009, 06:40 хто такой view - адресат события? или ваще левый объект, в которые надо передать событие, направленное не к нему?
Название: Re: как передать eventFilter Отправлено: zloyGamer от Декабря 01, 2009, 06:47 да, view - это левый обькт которому надо передать определенные нажатия клавиш, и пусть он сам определяет как их обрабатывать
Название: Re: как передать eventFilter Отправлено: sendevent от Декабря 01, 2009, 07:34 либо вызываем "свой" метод:
Код: bool SomeParent::eventFilter( QObject *obj, QEvent *event ) Код: bool SomeParent::eventFilter( QObject *obj, QEvent *event ) Название: Re: как передать eventFilter Отправлено: SASA от Декабря 01, 2009, 11:17 оффтоп.
zloyGamer, аватар в 1,3 Мб - ЗЛО!!! Название: Re: как передать eventFilter Отправлено: zloyGamer от Декабря 01, 2009, 15:12 пардон, уже исправились, щас проверить метод немогу, как получится отпишусь.
Название: Re: как передать eventFilter Отправлено: zloyGamer от Декабря 03, 2009, 07:08 спасибо sendevent
QCoreApplication::sendEvent( ui->view, myevent); - это то что надо! |