QTouchEvent 在任何交互中总是被调用 4 次

QTouchEvent always called 4 times with any interaction

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 个日志(因为没有 break 来阻止它们),一旦你松开按键,TouchEnd 就会被触发,因为你 end 打印了两次。