2014-12-18 2 views
0

Есть ли способ настроить приложение Qt, чтобы не обнаруживать сенсорный экран, чтобы сохранить поведение обычного экрана?Qt отключить обнаружение сенсорного экрана

+0

Не могли бы вы объяснить, в чем разница или фактическое поведение, которое вы хотите изменить или отключить? И какое оборудование (тип устройства и дисплей и ОС)? Потому что обычно приложение не обнаруживает сенсорный экран ... Он просто получает то, что дает ОС. – hyde

+0

Зачем вам это делать? Каков ваш прецедент? – lpapp

ответ

1

Это зависит. Если ваша операционная система различает событие прикосновения и нажатие мыши, вы можете создать TouchEvent фильтра, чтобы игнорировать события, как так:

#include <QObject> 
#include <QTouchEvent> // to get rid of "error: invalid use of incomplete type 'class QEvent'" 

class QTouchEventFilter: public QObject 
{ 
    Q_OBJECT 
public: 

    QTouchEventFilter(QObject *parent = 0) : QObject(parent) 
    { 
    } 

protected: 

    bool eventFilter(QObject * p_obj, QEvent * p_event) 
    { 
     if (p_event->type() == QEvent::TouchBegin || 
      p_event->type() == QEvent::TouchUpdate || 
      p_event->type() == QEvent::TouchEnd || 
      p_event->type() == QEvent::TouchCancel) 
     { 
      p_event->ignore(); 
      return true; 
     } 
     return false; 
    } 
}; 

Затем установите его на виджете вы хотите, чтобы игнорировать сенсорные события:

myWidget->installEventFilter(new QTouchEventFilter); 

Тем не менее, мой инстинкт заключается в том, что на большинстве ОС «касания», о которых вы говорите, появятся в виде событий нажатия мыши, и вы не сможете отфильтровать их, если вы не готовы отказаться от всех мышь для этого виджета. Если вы хотите, используйте ту же концепцию, но замените QEvent на один раз, связанный с мышью.

Смежные вопросы