如何在Qt中接收触摸事件?
在Qt中触摸屏幕时是否有接收方式。每当触摸屏时,我需要将计数器重置为0如何在Qt中接收触摸事件?,qt,Qt,在Qt中触摸屏幕时是否有接收方式。每当触摸屏时,我需要将计数器重置为0 我正在使用函数systemIdleControl将计数器重置为零。因此,当我触摸触摸屏时,它应该调用systemIdleControl如果您的环境和平台设置正确,那么您应该在QWidget中以mousePressEvent的形式接收触摸事件。 您应该从那里调用您的函数。如果您的环境和平台设置正确,那么您应该在QWidget中以mousePressEvent的形式接收触摸事件。 从那里你应该调用你的函数。如果你想截获所有触摸事
我正在使用函数
systemIdleControl
将计数器重置为零。因此,当我触摸触摸屏时,它应该调用systemIdleControl
如果您的环境和平台设置正确,那么您应该在QWidget中以mousePressEvent的形式接收触摸事件。
您应该从那里调用您的函数。如果您的环境和平台设置正确,那么您应该在QWidget中以mousePressEvent的形式接收触摸事件。
从那里你应该调用你的函数。如果你想截获所有触摸事件,不管触摸了哪个小部件,一种方法是将
QApplication
(或者QGuiApplication
子类化,如果你选择的话)并覆盖它的notify
方法。差不多
class TouchResetApplication : public QApplication
{
Q_OBJECT
Q_DISABLE_COPY(TouchResetApplication)
public:
TouchResetApplication(int&, char**);
protected:
bool notify(QObject*, QEvent*) Q_DECL_OVERRIDE;
};
TouchResetApplication::TouchResetApplication(int& argc, char **argv)
: QApplication(argc, argv)
{
}
bool TouchResetApplication::notify(QObject *receiver, QEvent *event)
{
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
case QEvent::TouchCancel:
systemIdleControl();
return true;
default:
return QApplication::notify(receiver, event);
}
}
如果您希望在调用systemIdleControl
后按正常方式处理触摸事件,那么您当然可以删除return true
,并将其设置为默认值
另一种方法是在
QCoreApplication::instance
上安装事件过滤器。QCoreApplication::notify
的文档中描述了选项的完整列表。如果您想拦截所有触摸事件,无论触摸哪个小部件,一种方法是将QApplication
子类化(或QGuiApplication
,如果您选择的话)并重写其notify
方法。差不多
class TouchResetApplication : public QApplication
{
Q_OBJECT
Q_DISABLE_COPY(TouchResetApplication)
public:
TouchResetApplication(int&, char**);
protected:
bool notify(QObject*, QEvent*) Q_DECL_OVERRIDE;
};
TouchResetApplication::TouchResetApplication(int& argc, char **argv)
: QApplication(argc, argv)
{
}
bool TouchResetApplication::notify(QObject *receiver, QEvent *event)
{
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
case QEvent::TouchCancel:
systemIdleControl();
return true;
default:
return QApplication::notify(receiver, event);
}
}
如果您希望在调用systemIdleControl
后按正常方式处理触摸事件,那么您当然可以删除return true
,并将其设置为默认值
另一种方法是在
QCoreApplication::instance
上安装事件过滤器。QCoreApplication::notify
的文档中描述了选项的完整列表。如何将mousePressEvent连接到插槽“systemIdleControl”?如果您可以发出连接到插槽的信号,或者您可以直接调用该方法,或者您可以根据您的其他要求使用QMetaObject::invokeMethod。您能否解释一下我如何接收该触摸事件?如回答中所述,如果系统设置正确,触摸事件的接收方式与鼠标点击的接收方式相同。如果您有特定的问题或错误,请不要问精确的问题。我需要在触摸事件发生期间调用函数“systemIdleControl”。现在,如何在接收鼠标单击事件或我需要编写调用“systemIdleControl”的函数的位置。如何将mousePressEvent连接到插槽“systemIdleControl”?在事件中,您可以发出连接到插槽的信号,或者您可以直接调用该方法,或者您可以根据您的其他要求使用QMetaObject::invokeMethod。您能否解释一下我如何接收该触摸事件?如回答中所述,如果系统设置正确,触摸事件的接收方式与鼠标点击的接收方式相同。如果您有特定的问题或错误,请不要问精确的问题。我需要在触摸事件发生期间调用函数“systemIdleControl”。现在如何才能在接收鼠标点击事件或我需要编写调用“systemIdleControl”函数的地方。