在Qt中触摸屏幕时是否有任何接收方式。无论何时触摸触摸屏,我都需要将计数器重置为0.
我正在使用函数systemIdleControl
将计数器重置为零。因此,当我触摸触摸屏时,它应该调用systemIdleControl
。
答案 0 :(得分:1)
如果您想拦截所有触摸事件,无论触摸哪个窗口小部件,一种方法是子类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
的文档中描述了完整的选项列表。
答案 1 :(得分:0)
如果您的环境和平台设置正确,那么您应该在QWidget中接收触摸事件作为mousePressEvent。 从那里你应该打电话给你的功能。