Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtkoder777 от Июль 19, 2018, 11:22



Название: Mouse release event странно работает (QWT+VmWare)
Отправлено: qtkoder777 от Июль 19, 2018, 11:22
Если быстро вывести мышь с зажатой кнопкой за пределы окна и отпустить кнопку, то не приходит MouseRelease, а только MouseMove. Теперь если немного сдвинуть мышь то доходит MouseButtonRelease. Лучше всего это проявляется если отпустить кнопку на краю экрана, но иногда бывает и в середине экрана. Возникает только при работе под виртуальной машиной.
Программа - график на Qwt
eventFilter поставлен на canvas:
Код
C++ (Qt)
this->canvas()->installEventFilter(this);
Код
C++ (Qt)
bool Graph::eventFilter(QObject *obj, QEvent *e)
{
QMouseEvent *me = dynamic_cast<QMouseEvent *>(e);
if(!me)return QObject::eventFilter(obj, e);
if (e->type() == QEvent::MouseButtonPress)
{
if(me->button()==Qt::LeftButton)
{
OutputDebugString(L"MOUSE PRESS\n");
return true;
}
else return QObject::eventFilter(obj, e);
 
}
else if(e->type() == QEvent::MouseButtonRelease)
{
 
if(me->button() == Qt::LeftButton)
{
OutputDebugString(L"MOUSE RELEASE\n");
return true;
}
else return QObject::eventFilter(obj, e);
 
}
else if(e->type() == QEvent::MouseMove)
{
OutputDebugString(L"mouse move\n");
return true;
}
else
{
// standard event processing
return QObject::eventFilter(obj, e);
}
}