crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в eventFilter
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
miksayer Дата 20.10.2010, 18:25
 
Цитата(Алексей1153 @ 20.10.2010, 18:07) *
попробуй вернуть управление до вызова QObject::eventFilter(object, event) , когда клавиша обработана

спасибо, то что нужно!
Алексей1153 Дата 20.10.2010, 18:07
  попробуй вернуть управление до вызова QObject::eventFilter(object, event) , когда клавиша обработана
miksayer Дата 20.10.2010, 17:59
  Доброго времени суток!
С помощью функции X11 XGrabKey я регистрирую глобальные клавиши, которые я хотел бы принимать:
   XGrabKey(QX11Info::display(), keyCode, mod, QX11Info::appRootWindow(), False, GrabModeAsync, GrabModeAsync);

А потом обрабатываю их в eventFilter'е:
bool MainWindow::eventFilter(QObject * object, QEvent * event)
{
    if (event->type() == QEvent::KeyPress && !isHotkeysEditing && isHotkeysEnabled)
    {
            QKeyEvent * keyEvent = static_cast<QKeyEvent *>(event);
            int qkey = keyEvent->key();
            if (keyEvent->modifiers() & Qt::ShiftModifier)
                qkey |= Qt::SHIFT;
            if (keyEvent->modifiers() & Qt::ControlModifier)
                qkey |= Qt::CTRL;
            if (keyEvent->modifiers() & Qt::AltModifier)
                qkey |= Qt::ALT;
            if (keyEvent->modifiers() & Qt::MetaModifier)
                qkey |= Qt::META;
            QKeySequence ks(qkey);
            hotkeyManager->PerformHotkey(ks);
    }
    return QObject::eventFilter(object, event);
}

Но если окно активно и я нажимаю зарегистрированный хоткей, то окну приходит 2 ивента о нажатии этой клавиши(я так понимаю, 1 так как окно активно и 1 так как я зарегистрировался на пример этих клавиш), что естественно, не то, что нужно. Как не принимать ивент, который пришел из-за "активности" окна?
P.S. QxtGlobalShortcut прошу не советовать, я его уже рассматривал как вариант и он не совсем подходит для моих целей
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 4:31