在Qt中触摸屏幕时有什么方法可以接收。无论何时触摸触摸屏,我都需要将计数器重置为0。如何在Qt中接收触摸事件?
我有功能systemIdleControl
重置计数器为零。所以当我触摸触摸屏时,应该调用systemIdleControl
。
在Qt中触摸屏幕时有什么方法可以接收。无论何时触摸触摸屏,我都需要将计数器重置为0。如何在Qt中接收触摸事件?
我有功能systemIdleControl
重置计数器为零。所以当我触摸触摸屏时,应该调用systemIdleControl
。
如果您的环境和平台设置正确,那么您应该在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
的文档中描述了您的选项的完整列表。
如何将mousePressEvent连接到插槽'systemIdleControl'? – Shyam
如果您可以发出连接到插槽的信号,或者您可以直接调用该方法,或者您可以根据其他要求使用QMetaObject :: invokeMethod。 –
你能否解释一下我该如何接收这个触摸事件? – Shyam