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
打印了两次。
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
打印了两次。