小编use*_*060的帖子

从“QEvent*”到“QPaintEvent*”的转换无效

尝试查找触摸事件是否发生,或者只是绘制它们。

\n\n
\nbool MyWidget::event(QEvent *event)\n{\n    switch (event->type())\n    {\n            case QEvent::TouchBegin:\n            case QEvent::TouchUpdate:\n            case QEvent::TouchEnd: \n        {\n\n            QTouchEvent *touchEvent = static_cast(event);\n\n            if (touchEvent->touchPoints().count() == 2) \n            {\n                const QTouchEvent::TouchPoint &touchPoint1 = touchEvent->touchPoints().first();\n                const QTouchEvent::TouchPoint &touchPoint2 = touchEvent->touchPoints().last();\n                nx=touchPoint1.scenePos().x();\n                ny=touchPoint1.scenePos().y();\n                pix = QPixmap::grabWidget (this,nx,ny,1,1);\n                img = pix.toImage();\n                rgb = img.pixel(0,0);\n                color.setRgb(rgb);\n                drawBit=1;\n            }\n        break;\n         }\n\n            case QEvent::Paint:\n\n                  return MyWidget::paintEvent( event);  \n              break;\n\n         default:\n            return false;\n            break;\n    }\n\n     return true;\n}\n\n\n\nvoid MyWidget::paintEvent(QPaintEvent *event)\n{\n\ntime_counter++;\nfor(i=0;(ired,b[i]->green,b[i]->blue,255), Qt::SolidPattern));\npainter.drawEllipse(b[i]->x,b[i]->y,b[i]->w, b[i]->w);\npainter.drawLine(b[i]->x+b[i]->w/2,b[i]->y+b[i]->w,b[i]->x+b[i]->w/2,b[i]->y+2*b[i]->w);\n\nif(b[i]->ballDead==false)\nb[i]->y+=b[i]->vy;\n\nif(drawBit==1 && b[i]->red==color.red() && b[i]->green==color.green() && b[i]->blue==color.blue())\nballHit(i);\n\n\n}\n}\n\n\n\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n此代码显示如下错误:\nmywidget.cpp:116:47: 错误:从 …

events qt qt4 qpainter touch-event

1
推荐指数
1
解决办法
1995
查看次数

标签 统计

events ×1

qpainter ×1

qt ×1

qt4 ×1

touch-event ×1