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
``发布于 2019-08-04 14:13:01
对于每个break,您都缺少了一个case,因为就像这样,它将贯穿所有的情况。
你不需要一个{}来处理这个案子,就像这样吧:
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事件,所以它会打印出所有三个日志(因为没有中断来停止它们),一旦您释放了媒体,就会触发TouchEnd,因此您已经将end打印了两次。
https://stackoverflow.com/questions/57346937
复制相似问题