Qt 如何在QML中禁用触摸事件?
------------------------更新------------------------ 现在我已经阻止了光标的移动,但现在如何禁用触摸事件Qt 如何在QML中禁用触摸事件?,qt,qml,qtquick2,Qt,Qml,Qtquick2,------------------------更新------------------------ 现在我已经阻止了光标的移动,但现在如何禁用触摸事件 在我的应用程序中,如果我在我的应用程序上触摸,我不希望光标移动到我触摸的地方,因此我必须禁用所有触摸事件,我使用eventFileter,但它工作得不太好 主窗口: QQuickWindow* win = qobject_cast<QQuickWindow *>(engine.rootObjects()[0]); //win-&g
在我的应用程序中,如果我在我的应用程序上触摸,我不希望光标移动到我触摸的地方,因此我必须禁用所有触摸事件,我使用eventFileter,但它工作得不太好 主窗口:
QQuickWindow* win = qobject_cast<QQuickWindow *>(engine.rootObjects()[0]);
//win->showMaximized();
gHwnd = (HWND)win->winId();
DisableTouchFeedback(gHwnd);
pObject->installEventFilter(new QTouchEventFilter);
QQuickWindow*win=qobject_cast(engine.rootObjects()[0]);
//win->showMaximized();
gHwnd=(HWND)win->winId();
禁用触摸反馈(gHwnd);
POObject->installEventFilter(新的QTouchEventFilter);
事件筛选器:
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::FocusIn ||
p_event->type() == QEvent::CursorChange ||
p_event->type() == QEvent::TouchBegin ||
p_event->type() == QEvent::TouchUpdate ||
p_event->type() == QEvent::TouchEnd ||
p_event->type() == QEvent::TouchCancel||
p_event->type() == QEvent::MouseButtonDblClick||
p_event->type() == QEvent::MouseButtonPress ||
p_event->type() == QEvent::MouseButtonRelease ||
p_event->type() == QEvent::MouseMove ||
p_event->type() == QEvent::MouseTrackingChange||
p_event->type() == QEvent::Gesture
)
{
qInfo()<<"----------------------"<<p_event->type();
p_event->ignore();
return true;
}
qInfo()<<"+++++++++++++++++++"<<p_event->type();
return false;
}
};
类QTouchEventFilter:公共QObject
{
Q_对象
公众:
QTouchEventFilter(QObject*parent=0):QObject(parent)
{
}
受保护的:
布尔事件过滤器(QObject*p_对象,QEvent*p_事件)
{
如果(p_事件->类型()==QEvent::FocusIn||
p_事件->类型()==QEvent::CursorChange||
p_事件->类型()==QEvent::TouchBegin||
p_事件->类型()==QEvent::TouchUpdate||
p_事件->类型()==QEvent::TouchEnd||
p_事件->类型()==QEvent::TouchCancel||
p_事件->类型()==QEvent::MouseButtonDblClick||
p_事件->类型()==QEvent::MouseButtonPress||
p_事件->类型()==QEvent::MouseButtonRelease||
p_事件->类型()==QEvent::MouseMove||
p_事件->类型()==QEvent::MouseTrackingChange||
p_事件->类型()==QEvent::手势
)
{
()哪个操作系统?我不认为这在QT中是可能的,因为至少在Windows 10中,这是由操作系统完成的-光标在触摸时移动,即使根本没有QT应用程序。该应用程序在Win10上,现在我已经阻止了光标的移动,但我如何才能禁用触摸事件?我很困惑。我很确定,
MousArea
有一个属性uchEnabled
,但相反,它是具有属性mouseEnabled
。也许可以使用这样一个多点触摸区域
来捕捉触摸并防止其干扰?我不知道您的确切用例。也许您可以在上发布一个功能请求,以使其更易于将来使用。哪个操作系统?我不认为在QT中,至少在Windows 10中,这是由操作系统完成的-光标在触摸时移动,即使根本没有QT应用程序。该应用程序在Win10上,现在我已阻止光标移动,但如何禁用触摸事件?我很困惑。我很确定,MousArea
有一个属性touch enabled
,但是tead是将属性鼠标启用的
。也许可以使用这样一个多点触摸区域
来捕捉触摸并防止其干扰?我不知道您的确切用例。也许您可以在上发布一个功能请求,以便于将来使用。