qtouchevent总是在与屏幕任何交互的情况下呼叫4次。即使我只是触摸屏幕0.1秒(不动并且没有释放手指(。因此,当触摸为实际上是结束或更新时,我无法获得信息。
bool ChartPlotter::touchEvent(QTouchEvent* ev) {
switch (ev->type()) {
case QTouchEvent::TouchBegin: {
__android_log_write(ANDROID_LOG_WARN,"","begin");
}
case QTouchEvent::TouchUpdate: {
__android_log_write(ANDROID_LOG_WARN,"","update");
}
case QTouchEvent::TouchEnd: {
__android_log_write(ANDROID_LOG_WARN,"","end");
}
...
和我刚触摸屏幕时的输出(我没有移动手指,也没有释放它,我只是触摸并将其固定在同一位置(
W : begin
W : update
W : end
W : end
``
您缺少每个case
的break
,因为这样的情况都会陷入困境。
您不需要{}
,因此可以这样:
bool ChartPlotter::touchEvent(QTouchEvent* ev) {
switch (ev->type()) {
case QTouchEvent::TouchBegin:
__android_log_write(ANDROID_LOG_WARN,"","begin");
break;
case QTouchEvent::TouchUpdate:
__android_log_write(ANDROID_LOG_WARN,"","update");
break;
case QTouchEvent::TouchEnd:
__android_log_write(ANDROID_LOG_WARN,"","end");
break;
}
...
由于您进行了TouchBegin
事件,因此它会打印出所有3个日志(因为没有断点可以阻止它们(,并且一旦发布了压力,触发了TouchEnd
,因此您的end
已两次打印出来。<<<<<<<<<<<<<<<<<<<<<<<<<</p>