Russian Qt Forum

Qt => Общие вопросы => Тема начата: mokynis от Март 28, 2017, 08:56



Название: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: mokynis от Март 28, 2017, 08:56
Установил eventFilter
Код:
ui->tabSpis->viewport()->installEventFilter(this);
дальше ловлю события
Код:
bool plan::eventFilter(QObject * obj, QEvent *ev)
{
if(obj==ui->tabSpis->viewport())
{
    if(ev->type()==QEvent::MouseButtonPress)
    {
        QMouseEvent *mev=static_cast <QMouseEvent*>(ev);
        if(mev->buttons()==Qt::RightButton)
        {
             if(mev->modifiers()==Qt::ControlModifier)
            { <обработка>}
            else if(mev->modifiers()==Qt::AltModifier)
            {<---сюда вообще не попадает--->}
        }
    }
}
Почему Ctrl или Shift обрабатываются, как события, а на Alt с правой кнопкой вообще не реагирует? Даже выделения ячейки не происходит, как будто вообще щелчка не было
версия Qt 4.8


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: Пантер от Март 28, 2017, 09:03
Неправильно ты, Дядя Фёдор, модификаторы проверяешь. Надо И использовать, а ты сравнение используешь.
Код
C++ (Qt)
if(mev->modifiers() & Qt::AltModifier) {
 
}
 

Если не поможет, выведи в консоль mev->modifiers() и сюда закинь его значение.


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: mokynis от Март 28, 2017, 09:28
при нажатии :RightButton + Alt у меня вообще событие 110 (tool tip) ловится, т.е. вообще до проверки QMouseEvent дело не доходит. Именно на Alt


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: __Heaven__ от Март 28, 2017, 11:31
Я не силён в фильтрах, а почему эти манипуляции не делаются через
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event) ?


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: Пантер от Март 28, 2017, 11:36
Я не силён в фильтрах, а почему эти манипуляции не делаются через
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event) ?
Потому чо у него не наследование, а перехват событий стороннего виджета.


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: mokynis от Март 28, 2017, 12:15
у меня на форме несколько виджетов, и некоторые из них должны ловить действия пользователя.
В общем вопрос снят: я выкрутился тем, что не ловлю Alt+правая кнопка мыши (ну, не могу я ее поймать!), а просто повесил на tableView обработчик нажатия клавиш и ловлю F12. Надо же как-то выходить из положения :-(


Название: Re: tableView->viewport() не ловит RightButton + AltModifier
Отправлено: GreatSnake от Март 28, 2017, 14:24
Обычно Alt+кнопка_мыши зарезервированны Window Manager-ом, поэтому до приложения это событие и не доходит.