有没有办法将Qt应用程序配置为不检测触摸屏以保持正常屏幕的行为?
答案 0 :(得分: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);
然而,我的直觉是,在大多数操作系统上,触摸&#39;你正在谈论的是鼠标新闻事件,并且除非你愿意放弃该窗口小部件的所有鼠标输入,否则你将无法过滤它们。如果您愿意,请使用相同的概念,但将QEvent替换为与鼠标相关联的一次。