Qt отключить обнаружение сенсорного экрана

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

0

Решение

Это зависит. Если ваша операционная система различает сенсорные события и нажатия мыши, вы можете создать фильтр 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 на тот, который был связан с мышью.

1

Другие решения


По вопросам рекламы [email protected]