c++ - Qt禁用触摸屏检测

标签 c++ qt touchscreen

有没有办法配置 Qt 应用程序不检测触摸屏以保持正常屏幕的行为?

最佳答案

这取决于。如果您的操作系统区分触摸事件和鼠标按下,您可以创建一个 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);

但是,我的直觉是,在大多数操作系统上,您所谈论的“触摸”将作为鼠标按下事件进入,除非您愿意放弃所有,否则您将无法过滤掉它们该小部件的鼠标输入。如果您愿意,可以使用相同的概念,但将 Q​​Event 替换为曾经与鼠标关联的事件。

关于c++ - Qt禁用触摸屏检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27550040/

相关文章:

c++ - 交换链表中的相邻节点

c - STM32和4线电阻触摸屏

c# - 如何从 C# winform 关闭屏幕键盘并取消任何 CTRL 或 ALT 按键

c++ - QtCreator中有内存浏览器吗?

HTML 图像链接在 iOS 上不起作用

c++ - 来自 C++ 中另一个类的枚举(使用 SFML)

android - Cocos2d-x 应用程序无法为 Android 编译

c++ - 使用 STL 的类模板无法编译

c++ - Qt - 记住最后检查的单选按钮

c++ - libxrandr 库 : how to change properties of connected monitors?